2016-09-30 101 views
0

「應用」我有這個簡單的代碼,這似乎與對齊async.waterfall應如何使用,但我有這個類型錯誤mentionned:異步 - 類型錯誤:無法讀取屬性未定義

var myCallback = function (data){ 
    console.log("task done for " + data); 
} 

var test = function (param,callback) { 
    console.log("in test, doing some work, param is: " + param); 
    callback(param); 
}; 

async.waterfall([ 
    test("call 1",myCallback), 
    test("call 2",myCallback), 
    test("call 3",myCallback) 
], function (err, result) { 
    // result now equals 'done' 
}); 

結果的執行是:

in test, doing some work, param is: call 1 
task done for call 1 
in test, doing some work, param is: call 2 
task done for call 2 
in test, doing some work, param is: call 3 
task done for call 3 
/Users/.../Documents/.../node_modules/async/dist/async.js:5021 
      task.apply(null, args); 
       ^

TypeError: Cannot read property 'apply' of undefined 
    at nextTask (/.../node_modules/async/dist/async.js:5021:17) 
    at Object.waterfall (/.../node_modules/async/dist/async.js:5024:9) 
    at Object.<anonymous> (/.../app.js:77:7) 
    at Module._compile (module.js:409:26) 
    at Object.Module._extensions..js (module.js:416:10) 
    at Module.load (module.js:343:32) 
    at Function.Module._load (module.js:300:12) 
    at Function.Module.runMain (module.js:441:10) 
    at startup (node.js:139:18) 
    at node.js:968:3 

我一直在環顧四周,但找不到問題 - 一些幫助歡迎。非常感謝! ç

+0

您是否需要將前一個函數的結果傳遞給下一個函數,或者只是同步運行函數列表? –

回答

0

試試下面的代碼:

async.waterfall([ 
    function(callback) { 
     task1().then(function(){ 
      callback(data) 
     }) 
    }, 
    function(data1, callback) { 
     task2().then(function(data2){ 
      callback(data1, data2) 
     }) 
    } 
], function(err, data1, data2) { 
    console.log('data'); 
}); 

您的代碼不工作,因爲它沒有當調用最終回調獲取並試圖調用一個不存在的另一個任務。

相關問題