如何解决如何将异步任务放入while循环中?
我目前在while循环中如何处理异步任务
myGroup = DispatchGroup()
while *condition* {
myGroup.enter()
query.getDocuments { (blah,blah) in
arr.append(docs)
//...
}
myGroup.leave()
}
completion(arr)
enter code here
这不起作用,因为它只是在跳过异步.getDocuments部分时立即返回到while循环
解决方法
您可以创建一个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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。