轮询的计时器加倍(同步?)

问题描述 投票:0回答:1

我有一个每秒触发一次的计时器,在该代码中,它进行 API 调用。有时,API 调用需要的时间超过一秒,并且在前一个完成之前返回轮询似乎会加倍轮询。一旦进入该状态,

invalidate
调用似乎不起作用,并且轮询会变得疯狂。有没有一种简单的方法来处理这样的事情,基本上为给定的计时器“同步”该任务中的代码?我显然不想简单地增加时间间隔,因为无论如何,问题总是会重新出现。

var pollingTimer: Timer?

pollingTimer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { _ in
    Task {
        await self.makeApiCall()
    }
}
ios swift timer
1个回答
0
投票

您可以使用 Task.sleep 代替计时器

Task {
    await self.makeApiCall()
    try await Task.sleep(for: .seconds(1))
}
© www.soinside.com 2019 - 2024. All rights reserved.