0
我正在使用基於令牌的身份驗證的Swift項目。當應用程序從後臺恢復時,AppDelegate函數applicationWillEnterForeground()
會執行檢查以確保內存中的令牌未過期(到期日期存儲在NSUserDefaults
和token_expiry
變量中)。如果它已經過期,它會調用一個函數來更新並獲得一個新的。Swift等待現有的異步操作在開始新異步操作之前完成
我面臨的問題是,雖然異步功能正在等待服務器回覆一個新的令牌,應用程序中的用戶可以做一些需要授權的事情。如果發生這種情況,由於尚未獲取新令牌,應用程序將使用舊令牌值查詢服務器,並且不會檢索數據。
有沒有一種方法可以確保異步函數更新令牌已完成,然後再執行其他操作?
您可以確保使用異步功能的順序。例如使用完成處理程序,期貨或承諾,NSOperations以及可能更多的技術。關於如何實現這一點,有很多答案。但我也會考慮改變你的設計:一種方法不會_prefetch_令牌,而是讓用戶執行一個「正常」的請求。如果沒有令牌或令牌已過期,則此請求將失敗,並顯示一定的錯誤。然後,只需執行以下操作:通知用戶需要再次授權,獲取令牌,然後重新應用請求。 – CouchDeveloper