【发布时间】:2020-07-10 06:36:51
【问题描述】:
我完全被异步/等待所困。我尝试了多种方法,但无法得到我需要的东西。情况如下:
async function mainfunction(){
var returned_result = [];
var client = mysql.createConnection(config);
client.connect(function(err){
if(err){
console.log('Error connecting to Db');
client.end();}
});
var query_result = await client.query(sql, async function(err, rows) {
...
var result = await secondFunction(client);
...
});
returned_result.push(query_result);
var returned_result_confirmation = await Promise.all(returned_result);
client.end();
return returned_result_confirmation;
}
我的目标是在调用 client.end(); 之前等待 secondFunction 完成。但它的行为并非如此。
你有什么指点吗?
非常感谢!
【问题讨论】:
-
await仅在您等待承诺时才做任何有用的事情。所以,如果你想使用await,你必须确保你使用的API会返回一个promise。要将 Promise 与 mysql 一起使用,您将需要 mysql2,然后您必须按照文档中的说明将其与 Promise 一起使用。而且,您不会将普通回调传递给返回承诺的 API(因为这是多余的)。因此,安装 mysql2 并阅读有关如何将其与 Promise 一起使用的文档。然后,只有这样,你才能使用await。仅供参考,关于同一主题还有数百个其他问题。
标签: mysql node.js async-await