微信小程序page中的data改动失效

代码:
checkMusic: function () {
    let nowMusicId = this.data.musicList[this.data.songIndex].id
    console.log(nowMusicId)
    wx.request({
      url: 'http://localhost:3000/check/music?id=' + nowMusicId,
      dataType: 'json',
      success: (res) => {
        if (res.data.message === "ok") {
          this.setData({ musicStatus: res.data.message })  //在此处修改数据
          console.log("刚开始的状态:"+this.data.musicStatus)
        } else {
          wx.showModal({
            title: '该歌曲无法播放',
            // content:'请前往app播放',
            confirmText: "我知道了",
            showCancel: false,
            success: function (res) {
              if (res.confirm) {
                console.log("我知道了")
              }
            }
          })
        }
        console.log("if结束的状态:"+this.data.musicStatus)
      }
    }),
    console.log("requst结束的状态:"+this.data.musicStatus)
  },

运行结果

img

为什么requst之后数据的改动失效了?
我在其他函数这样的做法都没问题,唯独这里不行,太诡异了

request里面不能用this
we.request的上面添加一行let that=this,后面用that.setData

打印刚开始的状态的时候,打印的不是修改后的值?

wx.request异步事件,this指向发生变化了指向window。和楼上说的那样外层let that=this,把指针记录下,在里面使用that

你怎么改都肯定没变化的嘛,因为你只有设定了默认和改变值,这2种情况,怎么还会有其他的输出?你那个显示没问题的,不知道你要做什么

啊,有什么失效的方法呀