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

标签 javascript node.js callback

我需要一些有关 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/

相关文章:

javascript - 如何自定义html5音频播放器

javascript - 使用 Axios 删除 React 中的请求

multithreading - 如何在 NodeJS 中进行线程图像处理?

Node.js 和导出的变量

javascript - 粘性标题动画线性背景颜色

javascript - 更改 JavaScript 中的日期格式

javascript - 使用 Node.js axios 时可能出现的网络错误有哪些

ruby-on-rails - 我如何在 rails 中销毁 'validate'

javascript回调函数,变量映射

javascript - 何时/为何在回调函数中使用 "return"