對不起,因爲我不知道如何清楚地描述它。爲什麼每個任務的參數應該在async.waterfall中相同
我剛剛遇到一個問題,當我使用async.waterfall並最終解決它。 但我仍然不知道它背後發生了什麼。
我發現: 當我們使用async.waterfall,在參數計算最後的任務應該是同一個任務。 否則,它會說"undefined is not a function"
。
我已經嘗試了一些測試,我也揣摩其source code。 對不起,我是JavaScript的新手。我無法理解大量的javascript模式。對我來說太難了。
源代碼掙扎了兩個多小時後,我需要一些幫助。 你能不能給我說說這兩個問題的一些提示:
- 它是如何處理錯誤,在哪種情況下,它會跳到最後一個回調?
根據我的測試結果,'', null,undefined
不會造成跳。這種行爲對我來說很有意義。
- 爲什麼參數的計數應該完全一樣?
如果在上一個任務中只傳遞一個參數,當然回調將是未定義的。但我想知道很多。
我知道這句話:申請,關閉等,當他們在簡單的演示要分開。但是當他們結合在一起時,我就變得失明瞭。
簡短的回答和長的答案都非常讚賞。 如果可能,也許可以提供一些鏈接,我可以自己學習。
在此先感謝。
代碼示例:
var async = require('async');
function test_waterfall() {
async.waterfall([
function(callback) {
/* works - pass all */
// callback(null, '1') // null 12
// callback('','first') // null 12
// callback(undefined,'1') // null 12
/* skip second, jump to error*/
// callback('error1') // error1 undefined
// callback('erro1', 'value1') // error1 value1
// callback({}) // {} undefined
// callback([]) // [] undefined
/* wrong -- undefined is not a function*/
callback()
// callback('')
// callback(undefined)
// callback(null)
},
function(arg, callback) {
// If pass only one argument in last task,
//of course, the callback will be undefined.
callback(null, arg+'2');
}
], function(err, result) {
console.info(err)
console.info(result)
});
}
test_waterfall()
你的第一個問題與在JavaScript [falsey和truthy(http://james.padolsey.com/javascript/truthy-falsey/)做。 'null,undefined,'''評估爲'false',所以不會被async視爲錯誤。 – Shanoor