我目前在while循环中如何处理异步任务
myGroup = DispatchGroup()
while *condition* {
myGroup.enter()
query.getDocuments { (blah, blah) in
arr.append(docs)
//...
}
myGroup.leave()
}
completion(arr)
enter code here
这不起作用,因为它只是在跳过异步.getDocuments部分时立即返回到while循环
答案 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)