2016-07-19 49 views
0

這可能是一個簡單的問題,但我寫信提出一個問題,因爲我根本就不明白。在下面的async.some例子中,參數'null'有什麼用處?根據文檔,該參數應該會出錯,但在回調中傳遞錯誤的意義何在?async.js理解回調錯誤參數所需的說明

async.some(['file1','file2','file3'], function(filePath, callback) { 
fs.access(filePath, function(err) { 
    callback(null, !err) 
}); 
}, function(err, result) { 
    // if result is true then at least one of the files exists 
}); 

我做了一些實驗,因爲我沒有得到錯誤參數如何到達主回調錯誤參數。

callback('err', true) // main callback returns 'err' and undefined. 
         // second argument 'true' got lost? 

callback(true) // main callback returns true and undefined. 
       // did not pass error argument but still works without the first argument? 
+0

[文檔](http://caolan.github.io/async/docs.html#.detect)表示,*結果將是通過真相測試所述陣列中的第一項(如果沒有通過,則返回undefined值。用(err,result)調用。* –

+0

我很抱歉,當我實際詢問async.some時,我犯了一個提到async.detect的錯誤。 – sawa

回答

1

它有用於區分進程(您的某個任務)遇到錯誤和成功時的錯誤。當一些完成時,您可能想知道結果,是否發生錯誤並單獨處理這些情況。 就async-j而言,任何傳遞錯誤的值作爲錯誤將被視爲非錯誤;如果出於任何只有錯誤將被傳遞給回調

在你提供

callback('err', true) // An error is passed so true will not be passed to final callback 

callback(true) // true is the error, as an error is passed, only true (the error) and no result will be passed to the final callback. 

基本上任何其爲truthy作爲第一個參數給回調傳遞的值的代碼示例中的文件中發生錯誤將導致立即錯誤