蓝鸟承诺:链式承诺的顺序异步执行,内部带有for循环

时间:2020-04-12 18:38:38

标签: javascript bluebird

为了避免回调地狱,我链接了多个(蓝鸟承诺)指令,每个指令运行一个异步for循环。而不是等待每个for循环结束,而是在for循环仍在运行时,该链条将立即冲到结尾,显示“ DONE”。如何更改我的for循环,以使承诺链“等待”每个人完成,然后执行下一个“然后”部分?

X

1 个答案:

答案 0 :(得分:0)

您不返回由promiseFor创建的Promise。到此为止,链已断开,并且.then(function(result2) {不等待该代码完成。您需要在return前面添加一个promiseFor(function(count) {

  .then(function(result1) {

    var promiseFor = Promise.method(function(condition, action, value) {
      if (!condition(value)) return value;
      return action(value).then(promiseFor.bind(null, condition, action));
    });

    return promiseFor(function(count) {
      return count < result1.length;
    }, function(count) {
      return Object.someOtherAsyncAction(someParam)
        .then(function(res) {
          return ++count;
        });
    }, 0)

  })