Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 完成foreach后进行响应_Javascript_Node.js_Asynchronous_Foreach - Fatal编程技术网

Javascript 完成foreach后进行响应

Javascript 完成foreach后进行响应,javascript,node.js,asynchronous,foreach,Javascript,Node.js,Asynchronous,Foreach,每个书架都有一个id,我找到了所有有这些id的书。 假设这个方法找到了3本书,我如何回应所有这些 当foreach完成时,您可以同时阅读书籍。最适合这样做: 它基本上会遍历每一个函数,并允许您指定一个函数在它们全部运行后运行 data.forEach(function(shelf){ books.find({"shelfid":shelf.id},function(book){ //book1,book2,book3 }) }); 编辑 正如WiredPairie指出的,这样

每个书架都有一个id,我找到了所有有这些id的书。 假设这个方法找到了3本书,我如何回应所有这些 当foreach完成时,您可以同时阅读书籍。

最适合这样做:

它基本上会遍历每一个函数,并允许您指定一个函数在它们全部运行后运行

data.forEach(function(shelf){  
  books.find({"shelfid":shelf.id},function(book){
   //book1,book2,book3
  })
});
编辑 正如WiredPairie指出的,这样做更有意义:

var arr = [];
async.each(data, function (fd, callback) {
    books.find({"shelfid":fd.id},function(book){
        arr.push(book);
        callback();
    });
}, function(err){
    // this runs once they've all been iterated through.
    // if any of the finds produced an error, err would equal that error
    // books are in the arr array now.
});

我怎么知道for-each是否完成了呢?如果您有几个异步方法,我建议使用for-node。您可以使用for-node。这样的问题不是已经有一百万个了吗?如果这真的是mongo/mongoose,您应该使用
$in
操作符<代码>书籍。查找({shelfid:{$in:[shelfIds]},函数(…){})不使用模块难道不可能吗?@hackio更新了答案,包括一种不使用模块的方法。
 books.find({shelfid: { $in: [shelfIds] }}, function(books){
     // do stuff with books.
 })