第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有沒有童鞋遇到過同樣的問題:請教微信小程序維護(hù)登錄態(tài)怎么使用Promise改寫?感激不盡

有沒有童鞋遇到過同樣的問題:請教微信小程序維護(hù)登錄態(tài)怎么使用Promise改寫?感激不盡

犯罪嫌疑人X 2019-07-28 12:54:56
業(yè)務(wù)需求是,維護(hù)登錄態(tài)的代碼寫在app.js里的,獲取到登錄態(tài)后保存到globaldata里,子頁面的請求接口都需要攜帶登錄態(tài),直接拿globaldata里的登錄態(tài)就可以。遇到的問題是,經(jīng)常子頁面比如index頁面里的代碼在app.js執(zhí)行完畢前就執(zhí)行,就拿不到globaldata里的登錄態(tài)。我的思路是能不能把app.js里維護(hù)登錄態(tài)的代碼用Promise改寫一下,然后把Promise實例放到globaldata里,子頁面比如index頁面取globaldata的Promise實例等待狀態(tài)變?yōu)閞esolve時就可以拿到登錄態(tài)然后再請求接口了。下面是我回調(diào)函數(shù)方式維護(hù)登錄態(tài)的大體流程:請教大佬怎么改寫呢?wx.getStorage({//Storage里取登錄態(tài)key:'loginState',success(res){//登錄態(tài)存在wx.checkSession({success(){//session_key未過期},fail(){//session_key已經(jīng)失效,需要重新執(zhí)行登錄流程wx.login({success(val){wx.request({url:'https://test.com/onLogin',data:{code:val.code},success(data){this.globalData.uid=data.uid;//將后端返回的登錄態(tài)uid保存到globalData方便子頁面使用}})}})//重新登錄}})},fail(){wx.login()//登錄態(tài)不存在,重新登錄}})
查看完整描述

2 回答

?
喵喵時光機

TA貢獻(xiàn)1846條經(jīng)驗 獲得超7個贊

當(dāng)然是可以的,不過不一定非要用globalData,實際上整個app實例都可以訪問,而且是個普通對象,所以你可以把這個Promise直接放在app的任何位置,比如:
//app.js
App({
loginPromise:null,
onLaunch(){
//假設(shè)在`checkSession`里,你
//1.驗證用戶登錄狀態(tài)
//2.獲取用戶信息
//3.并且把數(shù)據(jù)放到該放的地方
this.loginPromise=checkSession();
},
});
//pages/index/index.js
constapp=getApp();
Page({
onLoad(){
//其它的初始化動作
//使用app里的promise
app.loginPromise
.then(user=>{
//處理用戶身份
//處理完成之后,然后啟動
this.doStart();
});
},
doStart(){
//啟動函數(shù)
},
});
寫完答案我又看了眼你的問題,你知道怎么寫Promise吧?
                            
查看完整回答
反對 回復(fù) 2019-07-28
  • 2 回答
  • 0 關(guān)注
  • 249 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號