當我在做小程序的時候,由於客戶端要保存token,而token存在過期的可能,這個時候就需要遞歸調用一次獲取token的方法,而我的請求也是異步的,這個時候該怎麼做呢?(下面都是僞代碼)
我封裝的HTTP請求的代碼request.js
request(url, data, method) {// HTTP請求入口
return new Promise((resolve, reject) => {
wx.request({
...// 小程序的wx.request的一些樣本代碼,不贅述
success: (// 請求成功了
res => {
// 通過返回的res,發現token過期了
getToken().then(() => {// 成功獲取新token
return resolve({ isUpdateToken: true })// isUpdateToken爲true,說明剛剛獲取了最新token,需要遞歸調用一次request方法
})
}
)
})
}).then(({ isRegainToken, resData }) => {
// 關鍵在這裏,通過isUpdateToken判斷是否遞歸調用自身
return isUpdateToken ? this.request(url, data, method) : Promise.resolve(resData)
})
}