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){
控制台日志(重新排列)
})
您使用自动瀑布的方式是错误的。请参阅文档