ios - 在开始新的异步操作之前,快速等待现有的异步操作完成

标签 ios xcode swift asynchronous

我正在开发一个使用基于 token 的身份验证的 Swift 项目。当应用程序从后台恢复时,AppDelegate 函数 applicationWillEnterForeground() 会进行检查以确保内存中的 token 尚未过期(过期日期存储在 NSUserDefaults 中,并且在 token_expiry 变量中)。如果它已经过期,它会调用一个函数来更新并获取一个新的。

我面临的问题是,当异步函数等待服务器使用新 token 进行回复时,应用程序中的用户可以执行需要授权的操作。如果发生这种情况,由于尚未获取新 token ,应用程序将使用旧 token 值查询服务器,并且不会检索数据。

有没有办法确保在我们执行其他操作之前更新 token 的异步函数已完成?

最佳答案

设置 NSNotifications 系统,以便在身份验证有效/无效时通知您的 GUI。

在 GUI 中,在通知发生时根据需要启用或禁用需要身份验证的用户控件。如何执行此操作将取决于您的 GUI 设计:隐藏控件、灰显控件和事件指示器是一些选项。

在检查身份验证时根据需要发送这些通知。

关于ios - 在开始新的异步操作之前,快速等待现有的异步操作完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37096919/

相关文章:

ios - googlemap sdk 与 ios 架构有问题

ios - 异步调用时 UI 元素在 Segue 后缺少文本

ios - 坚持创建事件和格式化日期(Swift - EventKit - OS X)

ios - 在下一个 View 中显示更大的图像 CollectionView Controller

ios - 如何使用导航 Controller 作为我的 UIWebView [Xcode] 的导航?

xcode - 背景图像在模拟器中看起来不合适

swift - 在 SQLite 数据库中返回行时出现 "unexpectedly found nil while unwrapping an Optional value"错误

ios - MP3 文件无法在按钮选择上播放

ios - 发送后台短信 ios 12

iphone - 通过域名屏蔽 UIWebView 中的图片