为了账号安全,请及时绑定邮箱和手机立即绑定

小程序 wx.request this.data

小程序 wx.request this.data

守着一只汪 2019-03-14 18:15:34
const app = getApp()Page({data: {questions:{},},onLoad: function (options) {this.requestTopic(this);},onReady: function () {},onShow: function (){console.log(this.data);console.log(this.data.questions);},requestTopic : (that) =>{var params = { action: "topics"};wxApi.postRequest(app.globalData.serverUrl, params).then(  (res) => {    that.data.questions = res.data;    //that.setData({ questions: res.data })})}})代码精简过, 在onShow中,console.log(this.data.questions);怎么就拿不到值了呢 -_!!!
查看完整描述

2 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

因为requestTopic 是异步的,onShow执行完,requestTopic 回调还没执行。


查看完整回答
反对 回复 2019-03-25
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

onShow在request返回前执行,所以你在onShow里面打印question的时候,肯定是没有值的。

那么为什么同样是在onShow里面打印data,data里面的question却有值呢?是因为chrome打印出来的对象并不是简单的打印它当时的值,而是打印的是该对象的引用,所以之后你对该对象的所有改变,也会反映到之前的打印结果中去。

一个简单的办法验证这一点,你在request里面打一个断点,当执行到这个断点的时候,你看看onShow里面打印的data是不是有值。然后放开断点,再看是不是有值。然后你就明白了。


查看完整回答
反对 回复 2019-03-25
  • 2 回答
  • 0 关注
  • 1317 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号