微信小程序 index.js获取app.js异步请求的动态数据

对于 “index.js不能获取app.js异步请求的动态数据” 这个问题,本人也是郁闷了好几分钟。

解决方法是:getApp().wxFunction().then(res => { })

先展示一下开始错误的代码吧

app.js:

globalData: {
  test: 1,
},

onLaunch(options) {
  console.log("onLaunch");
  wx.request({
    url: 'https://www.xxx.com/api/xxx/xxx',
    method: 'POST',
    data: {
      test: 1
    },
    header: {
      'content-type': 'application/x-www-form-urlencoded'
    },
    success: res => {
      console.log("request");
      that.globalData.test = 2;
    }
  })
}

index.js:

onReady() {
  console.log("onReady")
  console.log(app.globalData.test);
},

打印结果:

此时在index.js中app.globalData.test的值是1,再看看打印的顺序,很明显wx.request的异步请求在最后,所以在index.js中并不能获取到动态数据。

 

接下来就是解决这个问题,这里我用的是Promise,再看看正确的代码

app.js

globalData: {
  test: 1
},

wxLogin() {
  let that = this;
  return new Promise((resolve, reject) => {
    wx.request({
      url: 'https://www.xxx.com/api/xxx/xxx',
      method: 'POST',
      data: {
        test: 1
      },
      header: {
        'content-type': 'application/x-www-form-urlencoded'
      },
      success: function () {
        that.globalData.test = 2;
      }
    })
  })
},

index.js:

onReady() {
  // 这里的app已被定义 const app = getApp();
  app.wxLogin().then(res => {
    console.log(app.globalData.test);
  });
},

这时,app.globalData.test的值是2。

 

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mossbaoo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值