在以下情况下我需要点击endpoint
:
viewWillAppear
上时。background
返回foreground
后。当我的应用返回concurrent
时,这会向同一个endpoint
创建至少2个(如果不是3个)foreground
个请求,尤其是在慢速互联网连接期间。
我知道我可以将concurrent
中Queue
次请求的数量限制为1,但有时我确实需要点击几个不同的endpoints
concurrently
所以我希望找到另一种选择。
我正在使用NSURLSession
与NSOperationsQueue
进行这些调用。是否有最佳做法来处理NSOperationsQueue
?
答案 0 :(得分:1)
可以将同一任务的NSOperation
子类合并在一起,从而删除任何冗余网络调用。为了做到这一点,每个操作都需要具有任务唯一的identifier
(不是操作本身),并且可以用于确定该操作是否在队列中。一旦确定一个操作在队列中,我们就可以采用新操作的块/闭包回调并将其插入到较旧的操作结构中,以确保在旧操作的任务完成时,两个回调都被触发。这有助于避免您的应用中缺少回调的情况。
我写了一篇涵盖这个话题的文章:
http://williamboles.me/removing-bolierplate-when-coalescing-nsoperations/
请注意,这仅适用于仍在队列中的操作,如果您想根据时间间隔限制操作,则需要扩展您的"流量控制器",如&#34 ;代码不同"评论