承诺链中的for循环

时间:2018-07-11 11:15:05

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

我有一个麻烦的问题,无法找到正确的答案。它在不支持await和async的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                


                    })
                }

            }

        })

1 个答案:

答案 0 :(得分:2)

您可以使用Promise.all

  

Promise.all(iterable)方法返回一个Promise   当可迭代参数中的所有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);
  }

});