【发布时间】:2022-02-10 20:19:47
【问题描述】:
您好,我有一种情况需要在多个任务中调用相同的方法。我希望有可能不以并行模式一一调用此方法(同步)。看起来是这样的:
var isReadyToRefresh: Bool = true
func refresh(value: Int) async {
try! await Task.sleep(nanoseconds: 100_000_000) // imitation API CALL
isReadyToRefresh = false
print("Try to refresh: \(value)")
}
func mockCallAPI(value: Int) async {
if isReadyToRefresh {
await refresh(value: value)
}
}
Task {
await mockCallAPI(value: 1)
}
Task {
await mockCallAPI(value: 2)
}
输出:
尝试刷新:1
尝试刷新:2
我需要的输出:
尝试刷新:1 或尝试刷新 2。取决于哪个任务被称为第一个任务。
有什么想法吗?
【问题讨论】:
-
我想等待第一次刷新API完成@Rob
标签: swift async-await task grand-central-dispatch urlsession