确定在Node.js中forEach中调用的最后一个asynchronous函数
在每个docs.forEach
迭代中,我有一个asynchronous函数调用docs.forEach
。 如何确定docs.forEach
的最后一次迭代?
下面的代码多次打印console.log
消息,而不是最后一个queue.enqueue
调用。
var mongojs = require('mongojs') var db = mongojs('localhost/test') var collection = db.collection('myCollection') var monq = require('monq') var client = monq('mongodb://localhost:27017/test') var queue = client.queue('testQueue') async.waterfall([ function(callback) { collection.find({}, function(err, docs) { callback(null, docs) }) }, function(docs, callback) { docs.forEach(function(doc, index) { // Async call here queue.enqueue('someTask', doc, function(err, job) { // Determining the last iteration of docs.forEach if(index = docs.length-1) { console.log('this is the last async call') callback(null) } } }) } ])