我完全不喜欢异步/等待。我尝试了多种方法,但无法获得所需的东西。这是情况:
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完成。但这不是这种方式。
你对我有什么指点吗?
非常感谢!
答案 0 :(得分:0)
您可以将整个内容包装成一个承诺:
var query_result = await new Promise((resolve, reject) => {
client.query(sql, async function(err, rows) {
...
secondFunction(client)
.then(data => resolve(data))
.catch(err => reject(err))
...
});
或(我猜不太好,但也可以做到)
var query_result = await new Promise((resolve, reject) => {
client.query(sql, async function(err, rows) {
...
resolve(await secondFunction(client))
...
});