我正在尝试学习如何在node.js中使用async模块,我会遇到以下问题:
我首先编写了这个脚本,它的工作正常(据我所知)
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
我想我在这里缺少一些基本的东西。如果可能的话,你能指出我的意思吗?
答案 0 :(得分:1)
发生错误是因为当process
运行时,它会调用modifications
,但此时尚未定义first_function
。
您可以选择两个选项:
1.在流程调用之前输出声明:
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