Как написать async.series для цикла
У меня есть этот код, который работает:
require! [async]
action = for let m from 1 to 12
(p) ->
p null, m
err, data <- async.series action
console.log data
но у меня возникли трудности, чтобы код работал на вложенном цикле:
action = for let m from 1 to 12
for let d from 1 to 12
(p) ->
p null, (m + "-" + d)
err, data <- async.series action
console.log data
сообщение об ошибке:
fn(function (err) {
^
TypeError: object is not a function
Согласно запросу, скомпилированный js-код, сгенерированный Livescript:
var async, action, res$, i$;
async = require('async');
res$ = [];
for (i$ = 1; i$ <= 12; ++i$) {
res$.push((fn$.call(this, i$)));
}
action = res$;
async.series(action, function(err, data){
return console.log(data);
});
function fn$(m){
var i$, results$ = [];
for (i$ = 1; i$ <= 12; ++i$) {
results$.push((fn$.call(this, i$)));
}
return results$;
function fn$(d){
return function(p){
return p(null, m + "-" + d);
};
}
}
1 ответ
Решение
action
вы получили для вложенного цикла, вероятно, вложенные массивы замыканий, как [[fn, fn], [fn, fn]]
так что вы хотите сгладить их путем объединения:
err, data <- async.series action.reduce (++)