异步迭代器提供了类型错误:未定义是不是一个函数
问题描述:
我想学习如何使用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
我想我失去了一些东西基本在这里。如果可能,你能指出一下吗?
答
发生该错误是因为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