ios - 如何阻止异步任务覆盖数据
问题描述
我有一个监听器,每当数据库上的数据更新时就会触发。这会在一定延迟后或立即更新属性。我的代码是这样的:
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
}
}
我发现我的异步任务有时会在同步任务之后触发。这会导致写入错误的值。它不应该这样做,同步任务需要“取消”当前正在进行的任何异步任务。我怎样才能做到这一点?
解决方案
推荐阅读
- java - 为什么java不允许使用泛型类型保存赋值
- c# - Examples how to save file from external .Net application to Sharepoint
- javascript - 在 reactjs 的 onchange 输入中调用 2 个函数,我遇到此错误 TypeError: Cannot read property 'target' of undefined
- android - 我没有从连接中获得响应代码
- jquery - 模态在平板电脑屏幕上从顶部获取边距,但不在桌面屏幕上
- node.js - 如何更新 back4app 中的用户对象?
- vba - 调用另一个表单的子时出现“需要对象”错误
- google-bigquery - 使用 Google bigquery 获取表的描述
- java - 使用 CMIS 集成到 Alfresco 文档的公共链接
- java - 如何使用正则表达式查找其他模式中出现的特定模式的数量?