一次执行一个调度任务,并在新启动时取消当前

Do one dispatch task at a time and cancel current when new starts

我有一个异步任务,我想执行,每当请求一个任务时,它应该使所有以前的任务都过时。这意味着我一次只想 运行 一个这样的任务,并在新任务开始时取消前一个任务。

示例:

用户按下一个按钮来计算一些东西。控制器在用户更改输入数据并再次按下按钮时进行计算。第一次计算应该被取消,新的计算应该从新的输入开始。

这个模式合理吗?实现这个的常见模式是什么?是否有直接映射到 DispatchQueue/OperationQueue?

看看 NSOperationNSOperationQueue(特别是 its cancelAllOperations method)。我认为,根据我对您的用例的收集,您可以将任务封装在 NSOperation(具体子类)中并使用 NSOperationQueue 来管理它,包括取消它。