你所推的是自我调用函数的“回报”的价值。所以在队列中任务是返回值。在这种情况下,任务将是一个接受另一个函数作为回调的函数。回调的参数与使用任务函数调用的参数相同。
var q = async.queue(function (task, callback) {
task("I'm a service!",callback);
}, 1);
q.push(function(userService,callback){
doSomeStuff(userService);
callback(userService);//stuff finished, call the callback given...
}); // we are passing a function here(not a self invoking function that returns value)
q.drain = function(userService){ // this will be invoked after finishing the queue
stuff(userService);
}
在这个例子中,我们将一个函数推入队列,它接受两个参数userService和callback。在队列功能将被称为“我是服务!”作为userService,以及来自队列函数争论的回调。在完成推送的功能后,回调将通过userService传递给userService来触发,并告诉异步模块此功能已完成,请执行下一步。