2014-09-05 28 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

相关问题