gpt4 book ai didi

javascript - Nodejs for循环并等待循环完成

转载 作者:搜寻专家 更新时间:2023-11-01 00:24:57 25 4
gpt4 key购买 nike

我有以下代码:

    //Marks all users which are reading the book with the bookId
var markAsReading = function (bookId,cb) {
User.find({}, function (err,users) {
if(err)
cb(err);
//Go through all users with lodash each function
_(users).each(function (user) {
//Go through all books
_(user.books).each(function (book) {

if(book.matchId === bookId)
{
user.isReading = true;
//cb();
}
});
});
//Need to callback here!!#1 cb(); -->Not working!
});
//Or better here! cb() --> Not working
};
exports.markAsReading = markAsReading;

我将 nodejs 与 mongoose 和 mongodb 一起使用。我想做什么:

  1. 使用 mongoose 从 mongodb 获取所有用户
  2. 在 lodash 的帮助下,每个函数遍历所有用户
  3. 在每个用户上浏览用户书籍(也使用 lodash 和 each)
  4. 如果当前bookId与函数参数中的bookId匹配-->设置图书“isReading”属性->true

我的问题是我只需要在位置 #2 上的一切都完成时回调但是整个 User.find 及其嵌套回调还没有准备好!

如果所有循环和查找方法都准备就绪,我该如何解决这个回调?

我已经阅读了一些有关 promises 和异步库的内容,但我如何在这种情况下使用它?

最好的问候迈克尔

最佳答案

我终于用这种模式用异步库解决了这个问题:

async.forEach(list,function (item,callback) {
//do something with the item
callback();//Callback when 1 item is finished
}, function () {
//This function is called when the whole forEach loop is over
cb() //--> This is the point where i call the callback because the iteration is over
});

关于javascript - Nodejs for循环并等待循环完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23935487/

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