我有一个监听器,只要数据库上的数据更新,它就会触发。这将在一定延迟后或立即更新属性。我的代码是这样的:
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
}
}
我发现,异步任务有时会在同步任务之后触发。这导致写入错误的值。它不应该这样做,同步任务需要“取消”当前正在进行的所有异步任务。我该怎么办?