现实的iOS开发中,经常会遇到一个控制器有多个网络请求的情况,而这些网络请求我们又需要控制一下返回的先后顺序。比如说请求任务一成功以后,需要拿到任务一的数据去请求任务二,再拿到任务二请求的数据去请求任务三,此时,就需要控制一下网络请求的返回顺序。经过查找资料,我现在采用添加队列任务的方式来实现。代码如下
import UIKit
class ViewController: UIViewController {
//定义一个全局的主队列变量
let group = OperationQueue.main
override func viewDidLoad() {
super.viewDidLoad()
//向队列里面添加第一个请求任务
group.addOperation(request1())
print("------------")
}
//第一个请求任务
func request1() -> BlockOperation{
let request = BlockOperation {
/**
这里写第一个网络请求方法
*/
//第一个请求完成以后向队列里面添加任务2
print("我是任务---1")
print(Thread.current)
self.group.addOperation(self.request2())
}
return request
}
//第二个请求任务
func request2() -> BlockOperation {
let request = BlockOperation {
/**
这里写第二个网络请求方法
*/
//第二个请求完成以后向队列里面添加任务3
print("我是任务---2")
print(Thread.current)
self.group.addOperation(self.request3())
}
return request
}
//第三个请求任务
func request3() -> BlockOperation {
let request = BlockOperation {
/**
这里写第三个网络请求方法
*/
print("我是任务---3")
print(Thread.current)
}
return request
}
}
本人刚开始学习swift语言,如果写的有不合适的地方,请各位大神进行批评指正哈。