我想暂停一个数据任务,直到第二个数据任务完成。我如何停止我的第一个数据任务。这是下面的代码,在我的数据任务中,我再次启动了第二个数据任务,但我想停止一个数据任务。
我对ios swift编程非常陌生,所以请解决这个问题,或者您可以提供一些替代方法来解决此问题。预先感谢。
let firsttask = URLSession.shared.dataTask(with: request) {data, response, error in
{
// There is some logic but after this I started below second task
let secondtask = URLSession.shared.dataTask(with: request) {data, response, error in
//some logic
}secondtask.resume()
}firsttask.resume()
答案 0 :(得分:0)
当您的第一个任务完成时是例程(请求),然后调用完成关闭。这意味着您的第一个任务是不再下载任何内容,并且与服务器的连接已关闭。因此,此时您无法停止第一个任务。
如果您想先完成第二项任务,只需交换任务顺序即可。
let secondtask = URLSession.shared.dataTask(with: request) {data, response, error in
{
// There is some logic but after this I started below second task
let firsttask = URLSession.shared.dataTask(with: request) {data, response, error in
//some logic
} firsttask.resume()
}secondtask.resume()
答案 1 :(得分:-1)
是的,可以使用DispatchSemaphore来实现。检查以下代码用法。
var sem = DispatchSemaphore(value: 0) // Create a semaphore
let secondtask = URLSession.shared.dataTask(with: request) {data, response, error in
{
// There is some logic but after this I started below second task
let firsttask = URLSession.shared.dataTask(with: request) {data, response, error in
//some logic
self.sem.signal() // Give signal to semaphore after completing 2nd task.
} firsttask.resume()
}secondtask.resume()
_ = sem.wait(timeout: .distantFuture) // wait or halt your thread.
任何有疑问的评论。