对不起,初学者的问题。
我有一个操作,该操作取决于从网络返回的数据的结果,并且该操作可能需要另一个网络请求。由于已经在datatask中调用了第一个网络请求,因此我想对第二个网络请求使用相同的线程,但不知道如何执行。有小费吗? ks
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
}
}
最佳答案
//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的Concurrency Programming Guide。您可能对iOS并发的工作方式有一些误解。 iOS工作的关键部分是了解GCD队列,尤其是它们与线程的区别。
关于ios - 快速,在同一任务的线程中再次调用网络,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40450690/