【发布时间】:2018-08-21 16:22:40
【问题描述】:
我试图在我的函数中使用promise,但它永远不会返回。这是我的代码:
function getData(id) {
return new Promise(function(resolve, reject) {
DbUtil.connection.query("my query... ", [id],
function (error, results, fields) {
if (error) {
reject(error);
} else {
resolve(results);
}
}
);
})
}
查询有效,我可以在else 块中看到它的结果。但是函数本身不会返回。我尝试在resolve 和Promise 函数本身之后添加一个return 语句。但它仍然没有返回。
我错过了什么?
编辑:我怎么知道函数没有返回?因为
function main() {
var data = getData(1);
console.log("data returned? " + data);
}
在上述main 函数中,从不调用日志语句。
【问题讨论】:
-
"但是函数本身并没有返回。" - 什么让你有那个想法?您需要提供minimal reproducible example。在您提供的代码中,您永远不会调用
getData,更不用说检查其返回值了。 -
@Quentin 我根据您的评论编辑了问题。
-
getData返回一个承诺。你需要做getData().then(data => ...)。 -
"the log statement is never called" — 唯一会发生的情况是 (a) 你从不调用
main()或 (b) 有一个例外,在这种情况下会有一条错误消息。
标签: javascript node.js promise