我试图通过迭代“ titles”数组并将功能数组稍后传递给异步瀑布来产生异步功能。
根据文档:
var asyncFunction = [
function(callback){
asyncFunc(1, function(){
callback(null);
});
},
// page 2
function(data, callback){
asyncFunc(2, function(){
callback(null, data);
});
}
]
第一个函数将callback
作为第一个参数,而第二个及所有后续函数将data
作为第一个参数,并将callback
作为第二个参数。
我的问题是如何根据地图迭代的索引有条件地创建函数?
下面是不工作的代码示例,以让您了解我要完成的工作。
谢谢
const asyncFuncs = ['a','b','c'].map( (letter, index) => {
const args = i == 0 ? [callback] : [data, callback]
return function(args...){
asyncFunc(2, function(){
callback(null, data);
});
}
})
async.waterfall(asyncFuncs, (error, result) => {})
答案 0 :(得分:0)
对不起,如果我错了。 我想您想基于数据动态瀑布功能。
var yourData = ['a','b','c'];
async.map(yourData, yourAssignFunction, function (err, result) {
if(!err) {
console.log('Success: ' + result);
} else {
console.log('Error: ' + err);
}});
function yourAssignFunction(item, callback) {
if (item === 'a') { // your conditions check here
// use waterfall 1
callback(waterfallFunction1);
} else {
// use waterfall 2
callback(waterfallFunction2);
}
}
function waterfallFunction1(item, callback) {
async.waterfall([
function(cb){
console.log(' -> task1: ', item);
cb(null, item);
},
function(response,cb){
console.log(' -> task2: ', item);
cb(null, item);
}], callback)
}