微信小程序在经过success后不知为何无法调用其它方法;
toregister(rex){
db.collection("s").where({
xx:rex
}).get({
success: function(res) {
this.test();
if (Object.keys(res).length > 1) {
console.log(this.data)
}
}
})
},
test(){
console.log("qwq")
},
发现无法调用 test() 方法了;也读取不到 data 数据了;还以为废了了都。
但其实还真是废了......
在 JavaScript 中,函数的 this
关键字指向调用该函数的对象。在你的代码中,success
回调函数是由微信小程序的 wx.cloud.database().collection().get()
方法调用的,因此 success
函数中的 this
关键字不再指向当前的 toregister
函数,而是指向 success
函数所属的对象。
为了解决这个问题,你可以使用箭头函数来定义 success
函数,因为箭头函数的 this
关键字会被继承自上层作用域。例如(仅显示重点):
success:res=>{
if (Object.keys(res).length > 1) {
this.test()
}
}
这样,当 success
回调函数被执行时,它内部的 this
关键字就会指向当前的 toregister
函数,从而正确地调用 test
方法。
将前者改成后者的模式就可以调用啦;(两段代码是存在不一样的【后者修改过的】)自己去找不同。如果有什么其它问题私信我帮你解决
制作实在不易,还望各位点赞👍打赏🧧收藏⭐️支持支持,谢谢大家!~~