我有一个异步任务,我想执行,每当请求任务时,它都应该废弃所有以前的任务。这意味着我希望一次只能运行一个这样的任务,并在新的任务开始时取消前一个任务。
示例:
用户按下按钮来计算某些内容。控制器在用户更改输入数据时计算并再次按下按钮。第一个计算应该被取消,一个新计算应该从新输入开始。
这种模式合理吗?实现这个的常见模式是什么?是否可以直接将其映射到DispatchQueue
/ OperationQueue
?
答案 0 :(得分:1)
查看NSOperation
和NSOperationQueue
(特别是its cancelAllOperations
method)。我想,从我收集的用例中,您可以将任务封装在NSOperation
(具体子类)中,并使用NSOperationQueue
来管理它,包括取消它。