我有一个TaskExecutor
和几个Task
:
class TaskExecutor {
func execute(_ task: Task, completion: ()->()) {
// do something async here
completion()
}
}
class Task {
// code for task
}
现在,我需要一个接一个地执行任务-也就是说,第二个任务仅在第一个任务完成时才开始,我知道我可以为任务分配一个可变数组,并继续从数组并在TaskExecutor
的完成闭合中执行它,但是有什么聪明的方法吗?
我还考虑了类似Chainable
协议的内容:
protocol Chainable<T> {
var next: T?
}
并使Task
符合它,然后将所有任务链接起来,像链表一样,完成一个任务后执行next
,但是我再次觉得应该有一些更容易,更直接的事情。 >
谢谢!