使用 NSURLSession 处理顺序下载

Handling sequential downloads with NSURLSession

我有一个数据获取任务,我想在后台线程上执行,但在 completionBlock 中获得响应后需要进行额外的调用。

例如:

NSURLSession *session = [NSURLSession sharedSession];
[[session dataTaskWithURL:requestURL completionHandler:completionBlock] resume];

在任务成功获取数据并调用 completionBlock 之后,我想从 NSURL 下载额外的 10 个资源,它们是 completionBlock 获取的数据的一部分。

在每个请求的块中再次调用 dataTaskWithURL:completionHandler: 还是在 completionBlock 的循环中进行阻塞网络调用更好?

谢谢!

是的,您可以在 completionBlock 内拨打额外的电话。但是请求不应该是 "blocking",而是您只需为额外的数据发起额外的异步请求。如果您的模型支持的话,您希望它们彼此同时运行。如果您按顺序而不是同时发出这些后续请求,您将付出显着的性能损失。