当我们在UrlSession上执行reset(completionHandler:)时,会话中的当前任务会发生什么情况。另外,如果它取消了当前任务,那么在调用reset(completionHandler:)之前,我们如何等待当前任务的完成?
发布于 2021-03-30 19:07:32
当您调用URLSession reset时,所有正在运行的任务都将继续运行。
使用reset的一个常见用例是,您希望清除与登录用户关联的所有数据,例如,“注销”功能。在调用reset之前恢复的请求可以使用旧的URL凭据存储,但是当响应完成时,它们可以使用新的URL缓存。这肯定不是你想要的。
因此,实现这一点的一种更可靠的方法如下:
reset,然后启用恢复任务。<代码>H214<代码>F215新任务将使用新的“会话环境”,以前恢复的任务将完成,但会出现取消错误。
第一个要点可能是最复杂的,因为您需要确保甚至不使用与旧会话环境相关联的数据创建请求。这可以使用网络层来解决,该网络层具有这样的特征,在该网络层中,输入的高级别"API请求“将被排队,且该队列可以被挂起和恢复。
https://stackoverflow.com/questions/66868735
复制相似问题