gpt4 book ai didi

javascript - ForEach(内部有异步函数)完成后的回调

转载 作者:行者123 更新时间:2023-11-28 01:26:38 25 4
gpt4 key购买 nike

我有一个 .forEach 循环,里面有一个异步函数,我的代码在循环完成之前执行回调()。
有没有办法让它完成循环,然后继续我的回调()。
这是我的代码:

var transactions = [];
t.transactions.forEach(function(id){
client.query('SELECT * FROM transactions WHERE id = $1;', [id], function(err, result) {
if(!err){
transactions.push({from : result.rows[0].from, to : result.rows[0].to, amount : result.rows[0].amount, time : result.rows[0].ct, message : result.rows[0].message, id : result.rows[0].id});
}
});
});
callback(transactions);
return done();

最佳答案

使用forEach的索引参数测试您是否正在进行最后一笔交易:

var transactions = [];
t.transactions.forEach(function(id, idx){
client.query('SELECT * FROM transactions WHERE id = $1;', [id], function(err, result) {
if(!err){
transactions.push({from : result.rows[0].from, to : result.rows[0].to, amount : result.rows[0].amount, time : result.rows[0].ct, message : result.rows[0].message, id : result.rows[0].id});
}
// If this is the last transaction, do the callback
if(idx === t.transactions.length - 1) callback(transactions);
});
});

由于每笔交易只有一个查询,因此您可以将测试放在查询的回调中。

关于javascript - ForEach(内部有异步函数)完成后的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22607909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com