鍍金池/ 問答/HTML/ 小程序,app.js頁面onShow如何獲取onLaunch里request異步

小程序,app.js頁面onShow如何獲取onLaunch里request異步得到的數(shù)據(jù)?

如題
我先在app.js wx.login里面跟后臺(tái)交互了一下 把openid傳過來,然后放到globalData里面

  onLaunch: function () {
    wx.login({
      success: res => {
        wx.request({
         ....省略
          success: res =>{
            if (res.statusCode == 200){
              this.globalData.openid = res.data.openid;  //我在這里賦值
            }
          }       
        })
      }
    })

  },
  onShow:function(){
    console.log('onshow---',this.globalData.openid);   //但這里打印值是空的
  },

  globalData: {
    userInfo: null,
    openid:''
  },

但是在onShow周期里獲取不到this.globalData.openid的值,請(qǐng)問如何操作?

回答
編輯回答
爆扎

你應(yīng)該在 request 返回值后進(jìn)行 回調(diào)。

2018年9月5日 22:54
編輯回答
小曖昧

在自定義方法里面寫個(gè)app.callback = fun , success if(this.callback)this.callback()啊

  onLaunch: function () {
    wx.login({
      success: res => {
        wx.request({
         ....省略
          success: res =>{
            if (res.statusCode == 200){
              this.globalData.openid = res.data.openid;  //我在這里賦值
              if(this.asd){
                  this.asd();
              }
            }
          }       
        })
      }
    })

  },
  onShow:function(){
     this.asd = res => {
      console.log(this.globalData.openid)
    }
  
  },

  globalData: {
    userInfo: null,
    openid:''
  },
2017年5月15日 06:32
編輯回答
毀了心

官方說了,要用this.setData()

2017年3月6日 04:01
編輯回答
巴扎嘿

異步方法請(qǐng)用回調(diào)。


看你更新重新給你回答一下,你這個(gè)人怎么這么軸,哈哈;

clipboard.png

看截圖吧。你忽略其它東西。看和你寫法差不多的敵方;

都說你的異步方法 不會(huì)阻塞onShow 的運(yùn)行。

2017年12月2日 12:44
編輯回答
熟稔

注意this
先這樣 const _this = this

 success: res =>{
            if (res.statusCode == 200){
              _this.globalData.openid = res.data.openid;  //this在這里綁定的不是app
              if(this.asd){
                  this.asd();
              }
            }
          }       
2017年1月12日 10:32