我正在开发一个使用基于 token 的身份验证的 Swift 项目。当应用程序从后台恢复时,AppDelegate 函数 applicationWillEnterForeground()
会进行检查以确保内存中的 token 尚未过期(过期日期存储在 NSUserDefaults
中,并且在 token_expiry
变量中)。如果它已经过期,它会调用一个函数来更新并获取一个新的。
我面临的问题是,当异步函数等待服务器使用新 token 进行回复时,应用程序中的用户可以执行需要授权的操作。如果发生这种情况,由于尚未获取新 token ,应用程序将使用旧 token 值查询服务器,并且不会检索数据。
有没有办法确保在我们执行其他操作之前更新 token 的异步函数已完成?
最佳答案
设置 NSNotifications 系统,以便在身份验证有效/无效时通知您的 GUI。
在 GUI 中,在通知发生时根据需要启用或禁用需要身份验证的用户控件。如何执行此操作将取决于您的 GUI 设计:隐藏控件、灰显控件和事件指示器是一些选项。
在检查身份验证时根据需要发送这些通知。
关于ios - 在开始新的异步操作之前,快速等待现有的异步操作完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37096919/