Javascript 如何将函数数组作为参数传递给另一个函数,并在后面的函数中调用这些函数

Javascript 如何将函数数组作为参数传递给另一个函数,并在后面的函数中调用这些函数,javascript,node.js,asynchronous,Javascript,Node.js,Asynchronous,最近我使用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.wat

最近我使用
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=[],
exeffunction=[]
var addOne=函数(num){
重新排列。推动(10)
}
对于(变量i=0;i<10;i++){
exeFunction.push(addOne(num))
}
瀑布(函数,函数(){
控制台日志(重新排列)
})
它不起作用。(原谅我的愚蠢) 当我像这样更改代码时:

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)
})
var async=require('async')
var resArray=[]
变量exeFunction=[]
var addOne=函数(){
重新排列。推动(10)
}
对于(变量i=0;i<10;i++){
exeFunction.push(addOne)
}
瀑布(函数,函数(){
控制台日志(重新排列)
})
它仍然不起作用。 这是错的吗?如何修复它

我是新来的
nodejs
,任何建议都会很好。谢谢

PS:常规for迭代器在这种情况下工作得很好。但是我想知道如何以这种方式使用
async

试试这个:

var c1=function(){//创建函数数组的第一个元素
警报(“C1中”);
}
var c2=function(){//创建函数数组的第二个元素
警报(“指挥控制系统中”);
}
var childs=[c1,c2];//创建函数数组
函数parentfunc(funcs){//创建一个调用函数数组的函数
警报(“在母公司中”);

对于(var i=0;i我想你应该这样做:

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)
})
var async=require('async')
var resArray=[],
EXE函数=[
函数(回调){
回调(空,0)
}
]
;
var addOne=函数(num,回调){
重新排列推送(num)
回调(++num)
}
对于(变量i=0;i<10;i++){
exeFunction.push(addOne)
}
瀑布(exeFunction,function(){
控制台日志(重新排列)
})

您的错误是,当您想要返回函数本身时,您返回了函数
addDone
(此处为
undefined

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)
})
var async=require('async');
var exeFunction=[];
风险值重排序=[];
var addOne=函数(num){
返回函数(下一步){
resArray.push(10);//或resArray.push(num)
下一个(空);
}
}
对于(变量i=0;i<10;i++){
exeFunction.push(addOne(i));
}
瀑布(exeFunction,function(err,res){
控制台日志(重新排列)
})

您使用
自动瀑布的方式是错误的。请参阅文档