如何将异步任务放入while循环中?

时间:2020-08-13 22:00:47

标签: ios swift firebase asynchronous google-cloud-firestore

我目前在while循环中如何处理异步任务

myGroup = DispatchGroup()
while *condition* {
  myGroup.enter()
  query.getDocuments { (blah, blah) in
    arr.append(docs)
     //...

  }
 myGroup.leave()                                                                                        
}
completion(arr)

    enter code here

这不起作用,因为它只是在跳过异步.getDocuments部分时立即返回到while循环

1 个答案:

答案 0 :(得分:1)

您可以创建一个Promise来处理异步部分,以使函数流畅地运行。兑现承诺后,async .getDocuments部分已经完成了文档的获取。然后,我的小组可能会离开并取出文档:

myGroup = DispatchGroup()
while *condition* {
    myGroup.enter();
    var promise = new Promise((resolve, reject) => {
         query.getDocuments { (blah, blah) in
         arr.append(docs)
         //...
         resolve(true);//or resolve(return-some-val-from-promise-if-you-want)
         }
     })
     promise.then(returnedVal => {
         myGroup.leave()       
     })                                                                                 
}
completion(arr)
相关问题