【问题标题】:Run async in parallel with only one callback仅使用一个回调并行运行异步
【发布时间】:2019-03-13 01:11:22
【问题描述】:

我有一个可能很愚蠢的问题。如果我错了,请纠正我。

我正在从 REST 端点获得 1000 个结果。然而,结果被标记化并分成 100 个元素数组。处理完 100 个元素后,我需要一个回调来获取下一个 100 个。

下面是我通过数组运行的代码

  async.eachSeries(body.hits.hits, function(hit, loopHit) {
      check_order(hit, loopHit);
  }, function done() {
      // get next array
  });

我在这里执行异步的原因是因为我需要知道何时完成所有 100 个结果(功能完成)。

结果是 - 我需要一个一个地运行所有 100 个元素(在 check_order 我连接到不同的 REST 点并在那里等待回调),我想同时运行所有这些元素,并且一旦最后一个是完成我想从第一个端点获取下一个数组。

有什么想法吗?

【问题讨论】:

    标签: node.js multithreading rest asynchronous callback


    【解决方案1】:

    异步中缺少您的回调:

      async.eachSeries(body.hits.hits, function(hit, loopHit) {
          check_order(hit);
          loopHit();
      }, function done() {
          // get next array
      });
    

    你也在 checkHit 函数中给出回调 loopHit。

    【讨论】:

    • 这将导致在函数 check_order 完成之前调用回调,所以是的 - 一方面它将按照设计的方式对所有命中执行,但另一方面它不会给最后一个命中的机会完成然后触发回调;
    猜你喜欢
    • 1970-01-01
    • 2022-07-27
    • 2015-09-16
    • 2017-11-21
    • 2015-04-15
    • 2021-11-23
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    相关资源
    最近更新 更多