在項目開發(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(() => {
// 請求該頁面接口
})