Javascript 完成foreach后进行响应
每个书架都有一个id,我找到了所有有这些id的书。 假设这个方法找到了3本书,我如何回应所有这些 当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指出的,这样
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.
})