我有一系列使用 Alamofire 在主函数中调用的函数列表中按顺序发出的 HTTP 请求runTask()
,我希望能够停止这些请求。因此,我为我需要运行的每个任务设置了runTask()
函数调用,并将工作项存储在一个数组中,如下所示:DispatchWorkItem
taskWorkItems.append(DispatchWorkItem { [weak self] in
concurrentQueue!.async {
runTask(task: task)
}
})
然后,我迭代工作项数组并调用perform()
函数,如下所示:
for workItem in taskWorkItems {
workItem.perform()
}
最后,我的应用程序中有一个按钮,我想在点击时取消工作项,我有以下代码来实现这一点:
for workItem in taskWorkItems {
concurrentQueue!.async {
workItem.cancel()
print(workItem.isCancelled)
}
}
workItem.isCancelled
打印到true
; 但是,我在被调用的函数中设置了日志,runTask()
即使workItem.cancel()
被调用和workItem.isCancelled
打印,我仍然看到函数正在执行true
。我做错了什么,如何停止执行我的功能?