2014-09-05 27 views
0

我想學習如何使用Node.js的異步模塊和I分爲以下問題:異步迭代器提供了類型錯誤:未定義是不是一個函數

我第一次寫這個劇本的正常工作(據我瞭解)

var async = require('async'); 
var seconds_values = []; 

process(); 

function process() { 
    var names = ['One', 'Two', 'ten', 'hello']; 

    modifications(names); 
} 

function modifications(somenames) { 
    async.each(somenames, function (one_name, callback) { 
     var random_num = Math.floor((Math.random() * 100000000) + 1); 

     seconds_values.push(one_name + '_' + random_num); 
     callback(); 
    }, function(err){ 
     async.each(seconds_values, function (one_value, callback) { 
      console.log(one_value); 
      callback(); 
     }, 
     function(err){ 
      console.log('==== The END ==='); 
     }); 
    }); 
} 

我試圖分配迭代器到一個變量,使代碼更具可讀性。

var async = require('async'); 
var seconds_values = []; 

process(); 

function process() { 
    var names = ['One', 'Two', 'ten', 'hello']; 

    modifications(names); 
} 

var first_function = function (one_name, callback) { 
    var random_num = Math.floor((Math.random() * 100000000) + 1); 

    seconds_values.push(one_name + '_' + random_num); 
    callback(); 
} 

function modifications(somenames) { 
    async.each(somenames, first_function, function(err){ 
     async.each(seconds_values, function (one_value, callback) { 
      console.log(one_value); 
      callback(); 
     }, 
     function(err){ 
      console.log('==== The END ==='); 
     }); 
    }); 
} 

第二腳本給我下面的錯誤:

iterator(x, only_once(done)); 
     ^
TypeError: undefined is not a function 

我想我失去了一些東西基本在這裏。如果可能,你能指出一下嗎?

回答

1

發生該錯誤是因爲process運行時,它會調用modifications,但此時尚未定義first_function

你可以有兩種選擇:

1.put過程調用之前的聲明:

var first_function = function (one_name, callback) { 
    var random_num = Math.floor((Math.random() * 100000000) + 1); 

    seconds_values.push(one_name + '_' + random_num); 
    callback(); 
} 
process(); 

2.使用函數聲明:

function first_function(one_name, callback) { 
    var random_num = Math.floor((Math.random() * 100000000) + 1); 

    seconds_values.push(one_name + '_' + random_num); 
    callback(); 
} 

而且在這裏看到:Link

相關問題