【发布时间】:2019-12-06 05:15:54
【问题描述】:
我不知道如何一个一个地执行多个 NSUrlSession 任务。当第一个任务完成时启动第二个任务,当第二个任务完成时启动第三个任务等
例如,我想从网络服务下载多个文件。
我希望他们开始一个一个地下载。
例如文件:1.png、2.png、3.png
我希望按照我编写它们的相同顺序下载它们。
如何使用 NSUrlSession 做到这一点?
【问题讨论】:
-
在前一个任务的完成处理程序中启动每个新任务。
-
@Gereon 这是错误的......我不是在寻找这种类型的解决方案。
-
您可以构建一些数据结构并将其用作队列,以便您的完成处理程序检查队列并在有工作要做时执行下一次提取,但本质上@Gereon 是正确的
-
@Paulw11 我不能这样做。我从应用程序的不同部分执行这些下载任务或 http 请求。请提供不同的解决方案。也许有 DispatchQueue 的东西?
-
您不能使用串行调度队列,因为
task.resume是非阻塞的并且调度工作是异步的。您知道数据任务完成的唯一点是在该数据任务的完成处理程序中。您需要构建自己的队列(数组可以)并让您的完成处理程序从数组中分派下一个项目。只要您使用单个队列实例,您从应用程序的不同部分执行此操作并不重要。请务必使用串行调度队列之类的东西来保护您的数组更新免受多个线程的影响
标签: ios swift grand-central-dispatch nsurlsession nsurlsessiontask