3

我有一个混乱的问题,我找不到合适的答案。它在不支持等待和异步的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                


                    })
                }

            }

        })
4

1 回答 1

3

你可以使用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);
  }

});
于 2018-07-11T11:18:42.507 回答