Как написать 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 (++)
Другие вопросы по тегам