iOS 多请求依赖

2018-12-12  本文已影响0人  丢了理想

有的时候一个页面要加载好几个网络请求
然后才能刷新页面,那怎么办呢?

如果请求没有依赖,可以不启用多线程

let number = 5

 request1.completionCallBack{
     number = number - 1
         if number == 0{
         reload()
     }
}

如果有依赖的

       let operation1 = BlockOperation.init {
            let semaphore = DispatchSemaphore(value: 0)
            Services.sendPostRequestcompletionCallBack: { (data) in
                semaphore.signal()
            }
            semaphore.wait()
        }

        let operation2 = BlockOperation.init {
            let semaphore = DispatchSemaphore(value: 0)
            Services.sendPostRequestcompletionCallBack: { (data) in
                semaphore.signal()
            }
            semaphore.wait()
        }

        let operation3 = BlockOperation.init {
            DispatchQueue.main.async {
                 self.setupModel()
            }
        }

        operation3.addDependency(operation2)
        operation3.addDependency(operation1)
        let queue = OperationQueue()
        queue.addOperations([operation1,operation2,operation3], waitUntilFinished: false)

现在的网络框架都是异步回调主线程的,所以如果直接在主线操作 wait(包括用其他方法)会卡住线程,所以不要在主线操作请求等待

上一篇 下一篇

猜你喜欢

热点阅读