承诺不会在node js中第一次返回



我试图制作一个简单的API,据了解,我必须使用promise,但promise没有正确返回。它返回上一个请求的JSON,而不是当前请求的JSON。

这是我正在使用的代码。我可能会用一种完全错误的方法来做这件事,但由于我是JavaScript的新手,我无法判断。

var mysql = require('mysql');
var con = mysql.createConnection({
My login details are here
});
//create a server object:
http.createServer(function (req, res) {
try {
var initializePromise = get_results();
initializePromise.then(function(result) {
output = result;
});
res.write(output.toString());
} catch (error) {
res.write("Something went wrong")
console.log(error);
} finally {
res.end();
}
}).listen(8080); //the server object listens on port 8080
get_results = function () {
return new Promise(function (resolve, reject) {
con.query(
"SELECT * FROM Links",
function (err, rows) {
if (rows === undefined) {
reject(new Error("Error rows is undefined"));
} else {
var d = new Date();
resolve(d.getSeconds());
}
}
)
}
)
}```

您必须返回initializePromise的.then中的响应。这就是您有最后一个对象作为响应的原因。你只需要改变你内心的想法。然后。

var mysql = require('mysql');
var con = mysql.createConnection({
});
//create a server object:
http.createServer(function (req, res) {
try {
var initializePromise = get_results();
initializePromise.then(function(result) {
output = result;
res.write(result.toString());
});

} catch (error) {
res.write("Something went wrong")
console.log(error);
} finally {
res.end();
}
}).listen(8080); //the server object listens on port 8080
get_results = function () {
return new Promise(function (resolve, reject) {
con.query(
"SELECT * FROM Links",
function (err, rows) {
if (rows === undefined) {
reject(new Error("Error rows is undefined"));
} else {
var d = new Date();
resolve(d.getSeconds());
}
}
)
}
)
}```

希望这能有所帮助!请告诉我!

Promise异步工作。您将回调传递给promise.then,一旦promise解析,它就会被执行。

在您的情况下,这意味着res.write(output.toString)在承诺解析之前执行。因此,CCD_ 3尚未被调用。

res.write命令拉入回调,您应该会得到正确的结果。

最新更新