确定Node.js中forEach中调用的最后一个异步函数

时间:2015-07-31 11:40:32

标签: javascript node.js asynchronous

我在queue.enqueue的每次迭代中都有一个异步函数调用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)
                }
            }

        })
    }

])

0 个答案:

没有答案