data.forEach(function(shelf){
books.find({"shelfid":shelf.id},function(book){
//book1,book2,book3
})
});
每個書架都有一個ID,我找到所有具有這些ID的書籍。 因此,假設這種方法找到3本書,當foreach完成時,我該如何迴應所有那些 書籍。foreach完成時做出響應
data.forEach(function(shelf){
books.find({"shelfid":shelf.id},function(book){
//book1,book2,book3
})
});
每個書架都有一個ID,我找到所有具有這些ID的書籍。 因此,假設這種方法找到3本書,當foreach完成時,我該如何迴應所有那些 書籍。foreach完成時做出響應
的async module非常適合這樣的:
它通過每一個迭代基本上並允許您指定要運行後,他們都運行的功能。
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.
});
由於WiredPrairie指出,這樣做更有意義:
books.find({shelfid: { $in: [shelfIds] }}, function(books){
// do stuff with books.
})
我怎麼知道,如果每個完成? – hackio
如果你有幾個異步方法,我建議使用[async.js](https://github.com/caolan/async)作爲節點。 – adeneo
你可以使用[promises](https://github.com/kriskowal/q) – katranci