node async模組流程
async.series series函式 序列執行它的作用就是按照順序一次執行。series函式的第一個引數可以是一個數組也可以是一個JSON物件
async.waterfall waterfall和series函式有很多相似之處,都是按照順序執行。
不同之處是waterfall每個函式產生的值,都將傳給下一個函式,而series則沒有這個功能
async.parallel parallel函式是並行執行多個函式,每個函式都是立即執行,不需要等待其它函式先執行。
async.parallelLimit parallelLimit函式和parallel類似,但是它多了一個引數limit。
limit引數限制任務只能同時併發一定數量,而不是無限制併發
使用 async.eachLimit 方法實現
async.eachLimit 方法接受四個引數,第一個引數為原始資料陣列,第二個引數為每次並行處理的資料量,第三個引數為需要為資料進行的處理,第四個引數為回撥函式。使用 async.eachLimit 完成傳送郵件任務的思路是定義一個對資料進行處理的函式,然後使用 async.eachLimit 將處理函式應用所有資料上。
let userEmailList = [ '[email protected]', '[email protected]', ..., '
let limit = 5;
let processer = function (email) {
sendEmail(email, function (error) {
return callback(error, result);
});
}
async.eachLimit(userEmailList, limit, processer, function (error, result){
console.log(error);
});