gpt4 book ai didi

javascript - 在 node.js 中 for 循环完成后的回调

转载 作者:数据小太阳 更新时间:2023-10-29 05:04:34 24 4
gpt4 key购买 nike

我需要一些有关 node.js 异步特性的帮助。我有一个 for 循环,它从数据库中收集数据。 “result”是一个数组,应该返回给主函数。

user_collection.findOne({
_id : uid
}, function(error, user) {
if(error)
callback(error)
else {
for(var j = 0; j < user.contacts.length; j++) {
if(user.contacts[j].accepted == 'true') {
user_collection.findOne({
_id : user.contacts[j].contactId
}, function(error, user) {
result.push(user);
})
}
}
callback(null, result); // This callback executes before the for-loop ends, ofc
}
});

如何确保回调在循环结束后执行?

最佳答案

您可能需要考虑使用像 async 这样的辅助库 https://github.com/caolan/async

它有助于保持代码更一致..

在您的情况下,您可以查看 forEach()方法

forEach(arr, iterator, callback)

迭代器使用列表中的项目和完成时的回调进行调用。

检查示例的单元测试

https://github.com/caolan/async/blob/master/mocha_test/each.js

关于javascript - 在 node.js 中 for 循环完成后的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10448295/

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