确定在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) } } }) } ])