小程序異步獲取openid解決方案

相信很多朋友在開發(fā)小程序的時(shí)候都會(huì)遇到小程序啟動(dòng)后臂拓,index頁(yè)面加載成功之后才獲取到openid厚脉,導(dǎo)致一些index頁(yè)面的post請(qǐng)求無(wú)法正常通訊,我這幾天也在想這個(gè)問題胶惰,并使用了一些解決方案:
第一種方案:引導(dǎo)頁(yè) + promise (方案來(lái)源于網(wǎng)絡(luò))
1器仗、app.js中通過(guò)promise封裝一個(gè)異步獲取openid的方法。
2、新建load引導(dǎo)頁(yè)精钮,并在app.json中設(shè)置該頁(yè)面指定威鹿。
3、load.js 的onload鉤子中轨香,設(shè)置promise成功時(shí)忽你,頁(yè)面重定向到index。
4臂容、這樣便實(shí)現(xiàn)了先獲取openid 再攜帶openid跳轉(zhuǎn)科雳。

這篇文章在CSDN上被無(wú)限轉(zhuǎn)載,用過(guò)的朋友都說(shuō)解決方案很不錯(cuò)脓杉,但我發(fā)現(xiàn)了弊端糟秘。
如果沒有自己做tabbar組件而使用官方tabbar組件的話,load頁(yè)就不能指定球散,否則頁(yè)面會(huì)無(wú)法加載尿赚。
對(duì)于剛接觸小程序開發(fā)的朋友來(lái)說(shuō),如果沒有vue之類的基礎(chǔ)蕉堰,寫一個(gè)component未免稍微復(fù)雜了一些凌净。

于是在經(jīng)過(guò)幾次嘗試之后,我找到了第二種自認(rèn)為比較不錯(cuò)的結(jié)局方案屋讶。
第二種方案:promise + if判斷
1冰寻、app.js中的promise不變。
2皿渗、因?yàn)閕ndex頁(yè)面加載后斩芭,會(huì)向服務(wù)器發(fā)送請(qǐng)求來(lái)獲取數(shù)據(jù),所以我們把這些請(qǐng)求全都放到一個(gè)自定義函數(shù)中乐疆,比如fn()
3秒旋、index.js的onload中,做一個(gè)判斷诀拭,如果localstorage中有openid迁筛,則執(zhí)行this.fn() ,如果沒有耕挨,就執(zhí)行promise后细卧,再執(zhí)行fn()

相關(guān)代碼:
app.js

 getToken() {
    return new Promise((resolve, reject) => {
      // 登錄
      wx.login({
        success: res => {
          // 發(fā)送 res.code 到后臺(tái)換取 openId, sessionKey, unionId
          if (res.code) {
            //發(fā)送res.code 到后臺(tái)
            wx.request({
              url: this.globalApi.checkUser,
              method: 'POST',
              data: {
                code: res.code
              },
              success(res) {
                //成功返回?cái)?shù)據(jù)后,將token值存儲(chǔ)到localStorage中
                wx.setStorage({
                  key: 'yerlLocalToken',
                  data: res.data.token
                });
                wx.setStorage({
                  key: 'yerlUserOpenid',
                  data: res.data.openid,
                })
                var resArg = res.data.token;
                resolve(resArg)
              },
              fail() {
                reject();
              }
            })
          }
        }
      })
    })
  }

index.js

onLoad() {
    var that = this;
    if (!wx.getStorageSync('yerlLocalToken') || wx.getStorageSync('yerlUserOpenid')){
      app.getToken().then((resArg) => {
        that.indexPage();
      })
    }else{
      that.indexPage();
    }
    //獲取banner圖片
  },indexPage(){
    var that = this;
    wx.request({
      url: app.globalApi.getIndexBanners,
      method: 'POST',
      data: {
        token: wx.getStorageSync('yerlLocalToken'),
        openid: wx.getStorageSync('yerlUserOpenid')
      },
      success(res) {
        //任何情況下筒占,只要返回的數(shù)據(jù)不包含content字段贪庙,則顯示默認(rèn)占位圖片
        if (!res.data.content || res.data.status == 'error') {
          that.setData({
            bnrUrls: ['https://lg-rqwhkn0q-1255357964.cos.ap-shanghai.myqcloud.com/indexBannerError.jpg']
          })
        } else {
          //將返回的圖片列表賦值給bnrUrls
          that.setData({
            bnrUrls: res.data.content
          })
        };
        //如果返回值中包含token,就重設(shè)token
        if (res.data.token) {
          wx.setStorage({
            key: 'yerlLocalToken',
            data: res.data.token
          });
        }
      }
    });
  }

到目前尚未發(fā)現(xiàn)問題翰苫,后續(xù)如果出現(xiàn)bug會(huì)再解決并更新文章止邮。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末这橙,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子导披,更是在濱河造成了極大的恐慌屈扎,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件撩匕,死亡現(xiàn)場(chǎng)離奇詭異鹰晨,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)止毕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門模蜡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人扁凛,你說(shuō)我怎么就攤上這事忍疾。” “怎么了谨朝?”我有些...
    開封第一講書人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵卤妒,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我叠必,道長(zhǎng),這世上最難降的妖魔是什么妹窖? 我笑而不...
    開封第一講書人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任纬朝,我火速辦了婚禮,結(jié)果婚禮上骄呼,老公的妹妹穿的比我還像新娘共苛。我一直安慰自己,他們只是感情好蜓萄,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開白布隅茎。 她就那樣靜靜地躺著,像睡著了一般嫉沽。 火紅的嫁衣襯著肌膚如雪辟犀。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,255評(píng)論 1 308
  • 那天绸硕,我揣著相機(jī)與錄音堂竟,去河邊找鬼。 笑死玻佩,一個(gè)胖子當(dāng)著我的面吹牛出嘹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播咬崔,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼税稼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼烦秩!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起郎仆,我...
    開封第一講書人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤只祠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后丸升,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體铆农,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年狡耻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了墩剖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡夷狰,死狀恐怖岭皂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情沼头,我是刑警寧澤爷绘,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站进倍,受9級(jí)特大地震影響土至,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜猾昆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一陶因、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧垂蜗,春花似錦楷扬、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至片部,卻和暖如春镣衡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背档悠。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工捆探, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人站粟。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓黍图,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親奴烙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子助被,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

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

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5剖张? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 27,513評(píng)論 1 45
  • 1揩环、通過(guò)CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫(kù)組件 SD...
    陽(yáng)明先生_X自主閱讀 15,988評(píng)論 3 119
  • 給提問的開發(fā)者的建議:提問之前先查詢 文檔搔弄、通過(guò)社區(qū)右上角搜索搜索已經(jīng)存在的問題。 寫一個(gè)簡(jiǎn)明扼要的標(biāo)題丰滑,并且...
    極樂叔閱讀 13,460評(píng)論 0 3
  • 最新的今日頭條爆粉方法褒墨,不用苦逼寫文章簡(jiǎn)單輕松引流 當(dāng)今社會(huì)炫刷,隨著互聯(lián)網(wǎng)和科技的不斷發(fā)展,人們?cè)缫巡辉倬心嘤谕ㄟ^(guò)電...
    舊島聽風(fēng)f閱讀 2,482評(píng)論 0 0
  • 華燈初上郁妈,穿梭在霓虹燈下浑玛, 仿佛這個(gè)世界只剩我一個(gè)人, 仿佛我不只是一粒塵埃噩咪。 微風(fēng)微雨顾彰,夜未央, 我不想離去胃碾,我...
    Shirmay閱讀 222評(píng)論 0 0