【发布时间】:2018-05-16 18:10:42
【问题描述】:
我目前正在创建一个应用程序,该应用程序每十秒从一个 http 请求获取 OHLC(开盘、高盘、低盘、收盘)财务数据。
我的 http 请求功能包含在 http 请求的完成处理程序中,如下所示:
HTTPRequest.requestOHLC(symbol: "XBTUSD") {ohclData in
//do something
}
我正在尝试找出在后台发送重复请求的最佳方式
我尝试过设置延迟 10 秒的 while 循环,如下所示:
while(true) {
HTTPRequest.requestOHLC(symbol: "XBTUSD"){ ohclData in
//do something
}
sleep(10)
}
这行不通,我相信是因为 HTTP 请求是异步的,或者 sleep 函数的作用超出了我的理解。 如果有人知道这样做的正确方法,那将非常有帮助,因为我对使用互联网协议还很陌生。这似乎应该是一件相当容易的事情。 此应用程序的使用方式,当当前视图控制器打开时,需要不断发送 http 请求,并在视图控制器更改时立即停止发送
【问题讨论】:
-
“不起作用”是什么意思?这是一个iOS应用程序吗? requestOHLC 的代码是什么?
-
@NobodyNada 是的,这适用于 iOS。在 while 循环中,HTTP 请求似乎永远不会被调用。 requestOHLC 的代码调用 Alamofire 库中的 HTTP 请求方法并返回我自己的包含一组双变量的结构,我认为这不是问题,因为代码在循环外工作正常
-
循环在哪里?它是在主线程上运行,在来自某事的回调中,在后台调度队列上,还是在什么地方?
-
@NobodyNada 目前,我只是在测试,所以它位于 viewDidLoad() 函数的末尾
标签: swift rest http httprequest