首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSUrlSession重置(completionHandler:)

NSUrlSession重置(completionHandler:)
EN

Stack Overflow用户
提问于 2021-03-30 17:59:37
回答 1查看 42关注 0票数 0

当我们在UrlSession上执行reset(completionHandler:)时,会话中的当前任务会发生什么情况。另外,如果它取消了当前任务,那么在调用reset(completionHandler:)之前,我们如何等待当前任务的完成?

EN

回答 1

Stack Overflow用户

发布于 2021-03-30 19:07:32

当您调用URLSession reset时,所有正在运行的任务都将继续运行。

使用reset的一个常见用例是,您希望清除与登录用户关联的所有数据,例如,“注销”功能。在调用reset之前恢复的请求可以使用旧的URL凭据存储,但是当响应完成时,它们可以使用新的URL缓存。这肯定不是你想要的。

因此,实现这一点的一种更可靠的方法如下:

  • 防止启动新任务(避免任何数据争用问题)
  • 清除与旧“会话环境”关联的所有数据-可能包括访问令牌和用户数据等。
  • 取消所有正在运行的任务(异步触发和忘记),然后
  • 调用reset,然后启用恢复任务。<代码>H214<代码>F215

新任务将使用新的“会话环境”,以前恢复的任务将完成,但会出现取消错误。

第一个要点可能是最复杂的,因为您需要确保甚至不使用与旧会话环境相关联的数据创建请求。这可以使用网络层来解决,该网络层具有这样的特征,在该网络层中,输入的高级别"API请求“将被排队,且该队列可以被挂起和恢复。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66868735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档