你所推的是自我調用函數的「回報」的價值。所以在隊列中任務是返回值。在這種情況下,任務將是一個接受另一個函數作爲回調的函數。回調的參數與使用任務函數調用的參數相同。
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來觸發,並告訴異步模塊此功能已完成,請執行下一步。