Swift:如何停止多个API调用

时间:2017-02-16 03:18:17

标签: ios swift

我的应用程序允许用户搜索特定的内容,然后我从不同的来源进行多个API调用,以获取有关他们搜索内容的信息。

我想添加一个“停止”按钮,以便用户可以停止搜索,例如,如果他们的wifi连接错误并且搜索时间过长。我有不同方法的API调用,因此当用户单击“停止”按钮时,我不知道哪个正在运行。

当用户点击停止时,是否有人熟悉停止所有功能甚至只是在应用中运行的API调用的方法?

2 个答案:

答案 0 :(得分:2)

你可以试试这个:

  • 为每个API调用创建Operation
  • Operation添加到OperationQueue以启动API调用
  • 致电operationQueue.cancelAllOperations()取消所有API通话。

答案 1 :(得分:0)

使用OperationQueue可以说是一个更好的解决方案,但您也可以将多个URLSessionDataTask存储在一个数组中,并使用.cancel()使其全部停止循环。

例如:

let task1 = URLSession.shared.dataTask(...
let task2 = URLSession.shared.dataTask(...

let taskArr = [task1, task2]

for task in taskArr {
    task.cancel()
}
相关问题