【发布时间】:2018-09-14 23:23:51
【问题描述】:
我正在尝试序列化mysql驱动的连接功能。但是当我运行我的函数时,nodejs 进行异步调用,我无法检索结果的正确值。 如何在序列化中运行 connection.connect?我不能使用 async/await 来解决这个问题,因为函数的结果会变成一个 Promise。
function a(){
var result = "false";
connection = dbConnection.getConnection();
console.log("test1");
connection.connect(function (err) {
console.log("test2");
result = "true";
});
console.log("end of function");
return result;
}
console.log(a());
日志:
测试1
函数结束
假
测试2
【问题讨论】:
-
要使用
async/await,你会希望你的函数返回一个promise。 -
您唯一能做的就是学习如何编写异步代码。要么学习如何正确使用回调,或者如何使用 Promise,或者如何使用 async/await。任何其他你想做的方式都是不可能的。
-
不幸的是,如果没有异步性,就无法解决这个问题。好消息是异步并不难实现。
标签: javascript node.js