Alamofire优先级队列

时间:2015-05-12 04:39:47

标签: ios swift queue alamofire

我正在使用Alamofire作为我的Swift应用程序的网络库。有没有办法用Alamofire保持网络请求的“优先级队列”?我相信我过去在图书馆看过这个功能,但是我再也找不到它了,或者找到关于此的其他帖子。

假设我在我的应用程序中打开一个页面,它开始发出一些请求。首先,它获得了一些JSON,这很快,没问题。

从那个JSON中,它会提取一些信息,然后开始下载图像。这些图像可能非常大并且需要很多秒(有时约30秒或更长)。但棘手的部分是用户可以选择在图像完成下载之前转到下一页。

如果用户在图像下载完成之前移动到下一页,是否可以将其移至较低优先级的队列?那么当下一页上的图像开始加载时,它们会更快?我甚至愿意完全暂停旧的请求,直到新的请求完成,如果可能的话。

请记住,我对许多建议持开放态度。我的实施有很多自由。所以,如果这是一个不同的库,或iOS中的不同机制,那很好。即使我继续使用Alamofire进行JSON,也可以使用其他方式下载和管理我的所有图像。

另外,可能不相关但我会在这里添加。我完全下载后,我正在使用https://github.com/rs/SDWebImage来缓存我的图像。这就是我不想完全取消请求的原因。我需要它完成然后它不会再发生。

TL; DR我想要一个快速队列和一个慢速队列,能够在完成之前将事物从快速队列移动到慢速队列。

1 个答案:

答案 0 :(得分:3)

您考虑过管理NSOperationQueue吗?这tutorial可能会有所帮助。在他的示例中,他在滚动页面时暂停下载,但我相信您可以调整NSOperation对象的queuePriority属性。