【小程序】小程序,app.js页面onShow如何获取onLaunch里request异步得到的数据?
如题
我先在app.js wx.login里面跟后台交互了一下 把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的值,请问如何操作?
回答
在自定义方法里面写个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:''
  },
你应该在 request 返回值后进行 回调。
异步方法请用回调。
看你更新重新给你回答一下,你这个人怎么这么轴,哈哈;

看截图吧。你忽略其它东西。看和你写法差不多的敌方;
都说你的异步方法 不会阻塞onShow 的运行。
官方说了,要用this.setData()
注意this
先这样 const _this = this
 success: res =>{            if (res.statusCode == 200){
              _this.globalData.openid = res.data.openid;  //this在这里绑定的不是app
              if(this.asd){
                  this.asd();
              }
            }
          }       
以上是 【小程序】小程序,app.js页面onShow如何获取onLaunch里request异步得到的数据? 的全部内容, 来源链接: utcz.com/a/83872.html








