【发布时间】:2017-07-12 17:15:33
【问题描述】:
我知道已经有很多关于调度队列、异步任务等的帖子,但是我无法从这些帖子中找到有用的解释,因为额外的代码让我分心了。我有谁能给我一个关于如何在任务 A 完成后开始任务 B 的明确指示?
我需要任务 A 的一些数据才能成功运行任务 B,我知道我必须对 DispatchQueue.async 做一些事情,但我不知道具体如何。
【问题讨论】:
-
“任务 B 在任务 A 之后开始”一个接一个 = 串行。因此,您需要一个串行 DispatchQueue(这是默认设置)。您是要阻塞等待 A 和 B 完成,还是要异步调度它们,让您的程序在不等待它们完成的情况下继续运行?
-
@Alexander 是的,这就是我需要的,我希望其他代码等待任务 A 和 B,因为任务 A 和 B 收集所有其他编码所需的所有数据。
-
那么您希望同步提交任务 (
.sync),而不是异步提交 (.async) -
@Rob“收集所有其他编码所需的所有数据”给我的印象是他想等到这一切都完成后再继续。
-
@Rob 我会将整个过程(A 然后 B)放在异步调用上,然后在其中同步调用它们。它可以防止你需要疯狂数量的嵌套完成处理程序
标签: swift3 grand-central-dispatch dispatch dispatch-async