如何停止异步任务覆盖数据

时间:2019-09-16 18:17:10

标签: ios swift

我有一个监听器,只要数据库上的数据更新,它就会触发。这将在一定延迟后或立即更新属性。我的代码是这样的:

backendClient.listenToProperty(path) { [weak self] (result: Result<Bool, Error>) in
    switch result {
    case .success(let value):
       if shouldDelay() {
           DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(10)) {
               self?.value = value
           }
       } else {
           self?.value = value
       }
    case .failure:
        self?.value = nil
    }
}

我发现,异步任务有时会在同步任务之后触发。这导致写入错误的值。它不应该这样做,同步任务需要“取消”当前正在进行的所有异步任务。我该怎么办?

0 个答案:

没有答案