鍍金池/ 問答/HTML/ 小程序 wx.request this.data

小程序 wx.request this.data

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);怎么就拿不到值了呢 -_!!!

clipboard.png

回答
編輯回答
遺莣

onShow在request返回前執(zhí)行,所以你在onShow里面打印question的時(shí)候,肯定是沒有值的。

那么為什么同樣是在onShow里面打印data,data里面的question卻有值呢?是因?yàn)閏hrome打印出來的對象并不是簡單的打印它當(dāng)時(shí)的值,而是打印的是該對象的引用,所以之后你對該對象的所有改變,也會反映到之前的打印結(jié)果中去。

一個(gè)簡單的辦法驗(yàn)證這一點(diǎn),你在request里面打一個(gè)斷點(diǎn),當(dāng)執(zhí)行到這個(gè)斷點(diǎn)的時(shí)候,你看看onShow里面打印的data是不是有值。然后放開斷點(diǎn),再看是不是有值。然后你就明白了。

2017年2月18日 05:51
編輯回答
雨萌萌

因?yàn)閞equestTopic 是異步的,onShow執(zhí)行完,requestTopic 回調(diào)還沒執(zhí)行。

2017年12月16日 02:50