Promise實現遞歸

當我在做小程序的時候,由於客戶端要保存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)
  })
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章