Promise應(yīng)用 - 登錄狀態(tài)

在項目開發(fā)過程中,經(jīng)常會遇到以下這種情況:

登錄、獲取用戶信息等寫在全局的src/app.js文件中,在此處獲取到用戶信息;
在某些頁面中,需要獲取到用戶信息后,再請求某些接口。

這個時候,我們就需要在這些頁面中,先判斷用戶信息是否請求回來了。等請求回來了之后再請求該頁面接口。

這種情況我們可以借助Promise實現(xiàn)。具體實現(xiàn)方法如下:

  • src/lib/utils.js文件中添加代碼
let _loginResolve = null
// onEnvReady直接賦值Promise對象,不要用方法返回Promise對象。
export const onLoginReady = new Promise((resolve) => (_loginResolve = resolve));
export function setLoginReady() {
  _loginResolve && _loginResolve(true);
}
  • 修改src/app.js文件
import { setLoginReady } from '@/lib/utils'

async () => {
  await login()
  await getUserInfo()
  // 登錄,獲取用戶信息后,設(shè)置狀態(tài)
  setLoginReady()
}
  • 在對應(yīng)的頁面,添加以下代碼
import { onLoginReady } from '@/lib/utils'

onLoginReady.then(() => {
  // 請求該頁面接口
})
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容