Ios Swift:如何停止多个API调用
我的应用程序允许用户搜索特定的内容,然后我从不同的来源调用多个API,以获取他们搜索内容的信息 我想添加一个停止按钮,以便用户可以停止搜索,例如,如果他们有一个坏的wifi连接,搜索时间太长。我用不同的方法调用API,所以当用户单击停止按钮时,我不知道哪个方法正在运行 当用户单击“停止”时,是否有人熟悉停止应用程序中运行的所有函数甚至API调用的方法?您可以尝试以下方法:Ios Swift:如何停止多个API调用,ios,swift,Ios,Swift,我的应用程序允许用户搜索特定的内容,然后我从不同的来源调用多个API,以获取他们搜索内容的信息 我想添加一个停止按钮,以便用户可以停止搜索,例如,如果他们有一个坏的wifi连接,搜索时间太长。我用不同的方法调用API,所以当用户单击停止按钮时,我不知道哪个方法正在运行 当用户单击“停止”时,是否有人熟悉停止应用程序中运行的所有函数甚至API调用的方法?您可以尝试以下方法: 为每个API调用创建一个操作 将Operation添加到OperationQueue以启动API调用 调用operatio
- 为每个API调用创建一个
操作
- 将
添加到Operation
以启动API调用OperationQueue
- 调用
以取消所有API调用operationQueue.cancelAllOperations()
- 为每个API调用创建一个
操作
- 将
添加到Operation
以启动API调用OperationQueue
- 调用
以取消所有API调用operationQueue.cancelAllOperations()
操作队列可以说是更好的解决方案,但您也可以将多个URLSessionDataTask
存储在一个数组中,并使用.cancel()
在一个循环中停止它们
例:
虽然使用操作队列
可以说是更好的解决方案,但您也可以将多个URLSessionDataTask
存储在一个数组中,并使用.cancel()
将它们全部停止在一个循环中
例:
您可以使用具有初始真值的布尔标志变量,将所有api调用放在检查该标志的if语句中。按stop时,您只需将标志值设置为false。我考虑过这一点,但问题可能是用户搜索(bool=true),他们按stop(bool=false),然后,当原始搜索仍在进行时,他们搜索新的内容,使bool=true,并允许两个搜索都进行。您可以使用具有初始真值的布尔标志变量,将所有api调用放在检查该标志的if语句中。按stop时,您只需将标志值设置为false。我考虑过这一点,但问题可能是用户搜索(bool=true),他们按stop(bool=false),然后在原始搜索仍在进行时搜索新内容,使bool=true,并允许两个搜索都通过hanks。我不熟悉操作,但我会调查一下。您有什么推荐信吗?您也可以取消个别操作。还可以编写操作,这样,如果他们在循环中工作,他们就可以检查isCanceled标志的状态,如果他们被取消,就可以提前终止操作。这里有一些关于这个主题的好的WWDC视频。谢谢。我不熟悉操作,但我会调查一下。您有什么推荐信吗?您也可以取消个别操作。还可以编写操作,这样,如果他们在循环中工作,他们就可以检查isCanceled标志的状态,如果他们被取消,就可以提前终止操作。关于这一主题,WWDC有几个很好的视频。
let task1 = URLSession.shared.dataTask(...
let task2 = URLSession.shared.dataTask(...
let taskArr = [task1, task2]
for task in taskArr {
task.cancel()
}