2015-03-03 106 views
2

非常感謝,如果有人可以給出一個更具體的例子如何使用async.applyEachSeries函數。如何在節點js中使用async.applyEachSeries?

async.applyEach([enableSearch, updateSchema], 'bucket', callback); 

// partial application example: 
async.each(
    buckets, 
    async.applyEach([enableSearch, updateSchema]), 
    callback 
); 

這是來自異步自述文件,但我不知道如何使用它。什麼是'桶',它只是一個字符串被傳遞到某個地方?

+0

所以,你知道,你的代碼示例使用'applyEach',而你問題標題提到'applyEachSeries'。我假設你想知道'applyEachSeries',因爲它們具有相同的用法。 – 2015-03-03 03:37:55

+0

你的假設是正確的。 – 2015-03-03 14:44:48

+0

我的答案在applyEachSeries()中有意義嗎?代碼片段只使用'applyEach()'和'each()',但是如果在這個例子中使用了'applyEachSeries',它就會按順序執行回調。 – 2015-03-03 14:48:26

回答

4
async.applyEach([enableSearch, updateSchema], 'bucket', callback); 

這就要求enableSearch('bucket')updateSearch('bucket')異步地回調,然後調用callback()一旦他們都做。


// partial application example: 
async.each(
    buckets, 
    async.applyEach([enableSearch, updateSchema]), 
    callback 
); 

async.applyEach()調用返回調用都enableSearch()updateSchema()其參數,它被調用的函數。由於async.each()的第一個參數應該是一個數組,因此我假定buckets是一個字符串數組(作爲第一個例子涉及將一個字符串傳遞給enableSearch()updateSearch())。因此,這可能會調用enableSearch()updateSearch()與數組buckets中的每個字符串(然後調用callback())。

+0

在我的情況下,回調不起作用。 'async.applyEachSeries'只調用第一個函數'enableSearch'並且沒有回調。 – 2016-07-04 06:55:55

1

這裏的async.applyEachSeries的漂亮明顯的例子:

applyEachSeries(tasks, args..., [callback]) 

例如:

function one(arg1, arg2, callback) { 
    // Do something 
    return callback(); 
} 

function two(arg1, arg2, callback) { 
    // Do something 
    return callback(); 
} 

async.applyEachSeries([one, two], 'argument 1', 'argument 2', function finalCallback(err) { 
    // This will run after one and two 
}); 

來源:https://stackoverflow.com/a/35309495