最近我使用async
来控制工作流程。我想异步执行一组函数。使用节点模块async
。
以下是我的代码
var async = require('async')
var resArray = [],
exeFunction = []
var addOne = function (num) {
resArray.push(10)
}
for(var i = 0; i < 10; i++){
exeFunction.push(addOne(num))
}
async.waterfall(exeFunction,function () {
console.log(resArray)
})
它没有用。(原谅我的愚蠢) 当我改变这样的代码时:
var async = require('async')
var resArray = []
var exeFunction = []
var addOne = function () {
resArray.push(10)
}
for(var i = 0; i < 10; i++){
exeFunction.push(addOne)
}
async.waterfall(exeFunction,function () {
console.log(resArray)
})
它仍然无法运作。 这是错误的?如何解决?
我是nodejs
的新手,任何建议都会非常好。谢谢!
PS:迭代器的常规在这种情况下运行良好。但我想知道如何以这种方式使用async
。
答案 0 :(得分:0)
试试这个:
var c1=function(){ // Create First Element of array of functions
alert("In C1");
}
var c2=function(){ // Create Second Element of array of functions
alert("In C2");
}
var childs=[c1,c2]; // Create array of functions
function parentfunc(funcs){ // Create a function which will invoke array of functions
alert("In Parent");
for(var i=0;i<funcs.length;i++){
if(typeof(funcs[i])=="function"){ // Invoke a function from array of functions
funcs[i]();
}
}
}
parentfunc(childs); // Invoke function which will invoke array of functions
答案 1 :(得分:0)
我想你想这样做:
var async = require('async')
var resArray = [],
exeFunction = [
function(callback) {
callback(null, 0)
}
]
;
var addOne = function(num, callback) {
resArray.push(num)
callback(++num)
}
for(var i = 0; i < 10; i++){
exeFunction.push(addOne)
}
async.waterfall(exeFunction, function() {
console.log(resArray)
})
您的错误是,当您想要自己提供函数时,您将返回函数addDone
(此处为undefined
)。
答案 2 :(得分:0)
您需要添加callback
功能才能转到to the next task,就像这样
var async = require('async');
var exeFunction = [];
var resArray = [];
var addOne = function (num) {
return function (next) {
resArray.push(10); // or resArray.push(num)
next(null);
}
}
for (var i = 0; i < 10; i++) {
exeFunction.push(addOne(i));
}
async.waterfall(exeFunction, function (err, res) {
console.log(resArray)
})