【问题标题】:Promise in for loop in promise chainPromise 链中的 for 循环中的 Promise
【发布时间】:2023-04-06 04:36:02
【问题描述】:

我有一个无法找到正确答案的混乱问题。它在不支持等待和异步的 firebase 中。

目前,它可以工作,但只运行一次,不会循环。

return foo.bar(query);})
        .then((result) => {

            if (result == '0') {
               //do stuff
            } 


            else {
                var i;
                for(i = 0; i <= result; i++) {
                    return foo.bar(secondQuery);})
                    .then((secondResult) => {
                        //do other stuff                


                    })
                }

            }

        })

【问题讨论】:

  • return 将在第一次迭代后终止函数。你想在那里实现什么目标?

标签: javascript node.js firebase for-loop promise


【解决方案1】:

您可以使用Promise.all

Promise.all(iterable) 方法返回一个 Promise 当可迭代参数中的所有承诺都具有时解决 已解决或当可迭代参数不包含任何承诺时。它 以第一个拒绝的承诺的原因拒绝。

return foo.bar(query).then(result => {

  if (result == '0') {
    //do stuff
  } else {

    var i;
    var all = [];
    for (i = 0; i <= result; i++) {
      var p = foo.bar(secondQuery).then((secondResult) => {
        //do other stuff                
      });

      all.push(p)
    }

    return Promise.all(all);
  }

});

【讨论】:

  • 所以我的实现有点复杂。我在我的应用程序上下文中做了你所说的,并粘贴了下面的完整代码,因为它似乎仍然只运行一次。它不循环。 pastebin.com/ReXD1G0e
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-16
  • 1970-01-01
  • 2019-08-21
  • 2016-08-09
  • 2021-09-09
  • 2020-11-04
相关资源
最近更新 更多