ios - 如何在 swift5 中每 30 分钟调用一次 API?
问题描述
我正在调用一个 API,但该数据不会经常更改,并且我将数据存储在核心数据中。我希望该 API 在 30 分钟内只调用一次。仅当从上次 API 调用超过 30 分钟时才调用 API 是否有更好的方法。我可以想到基于 Timer,但想知道是否还有其他更好的方法可以做到这一点?
解决方案
如果您随机调用 api,那么在内存中为最后一次成功调用保存一个变量可能就足够了。如果您希望自动调用 API,最好的方法是设置一个计时器。
如果您希望您的应用程序禁止在 30 分钟内拨打新电话,那么这将是一个简单的示例:
(写这个是为了游乐场)
var lastCheck: Date?
let minimumMinutes = 60.0
func makeNetworkCall() {
if let lastCheckDate = lastCheck, lastCheckDate.timeIntervalSinceNow < (30 * minimumMinutes) {
debugPrint("Not making call, Didn't go 30 min yet")
return
}
lastCheck = Date()
debugPrint("Making network call!")
// ... make call
}
makeNetworkCall() // Should make call
makeNetworkCall() // Should not make call
makeNetworkCall() // Should not make call
我没有测试上面的代码,但它应该可以工作。
推荐阅读
- reactjs - 打字稿自定义钩子,事件类型问题
- octave - 函数在 Octave 中运行时的全局变量和错误
- django - 如何在项目 django 中将 app rest 导入我的应用程序
- python - python setup.py install 无效的suntax
- apache-spark - 在 sqoop 或 pyspark 中从源导入时如何管理损坏的数据
- c# - .NET 5 IValidateOptions 不会自动验证
- html - 如何使用 CSS 媒体查询使图像位于文本下方?
- javascript - 如何使用javascript更改html中元素的id?
- python - Plotly Dash - Bootstrap 的卡片不会变色
- python - 通过 python/dash 从 Bootswatch 主题中检索 Hex 或 RGB 值