0

对不起初学者的问题。我有一个动作取决于从网络返回的数据的结果,并且该动作可能需要另一个网络请求。由于已经在 datatask 中调用了第一个网络请求,我想为第二个网络请求使用同一个线程,但不知道该怎么做。任何提示?tks

 let task = URLSession.shared.dataTask(with: request  as URLRequest )
        {   data, response, error in

            if func_1 (data) {
                return
            }else {
                //call another network request here, but don't want to do 
                //another task = URLSession.shared.... again since we are already on an async thread

            }
        }  
4

1 回答 1

1
//call another network request here, but don't want to do 
//another task = URLSession.shared.... again since we are already on an async thread

这是一种误解。此时创建另一个网络请求没有问题。所做的只是在适当的队列上放置另一个请求。当你安排它时,你在哪个线程上运行并不重要。

我强烈推荐 Apple 的并发编程指南。你可能对 iOS 并发的工作原理有一些误解。iOS 工作的一个关键部分是理解 GCD 队列,尤其是它们与线程的区别。

于 2016-11-06T15:00:59.150 回答