会在节点js中第一次返回"/>
Promise不会在节点js中第一次返回
我正在尝试制作一个简单的API,根据我的理解,我必须使用一个Promise,但是Promise无法正确返回。它从上一个请求返回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());
}
}
)
}
)
}```
回答如下:承诺异步工作。您将回调传递给已执行的诺言.then
一旦诺言得以解决。
在您的情况下,这意味着执行了res.write(output.toString)
之前承诺得以解决。因此,尚未调用output = result
。
将res.write
命令放入回调中,您应该获得正确的结果。
更多推荐
Promise不会在节点js中第一次返回
发布评论