1、方法createAnimation调用方法getToken,getToken中发送了post请求,并将返回来的参数赋值给data()中的变量token,但是在createAnimation中用this.token获取不到token的值
2、
createAnimation() {
const t = this;
this.viewDialog = true;
this.viewTitle = this.anaInput;
t.loading = true;
t.getToken()
// console.log(t.getToken());
// this.$options.methods.getToken.bind(this)();
console.log(222,t.token)
},
getToken() {
// this.token='qqqq';
this.$http.post(this.ip + '/getyoyatoken', { //获取token
userid: this.user_id
}).then((res) => {
if (res.data.data.result === 1) {
this.token = res.data.data.list[0].token;
// return res.data.data.list[0].token;
console.log(111,this.token)
}
})
},
3.根据百度的用this.$options.methods.getToken.bind(this)();或者this.$options.methods.getToken();也不起作用,而且报错post undefined,我试了在getToken中直接给token赋值,在createAnimation中是可以获取到的。变量token的值确实被改变了,在createAnimation方法中拿不到,但是在执行完createAnimation后再执行其他发法是能获取到token的值的,我试了用setTimeout(()=>{this.getToken})也不行。如果直接让getToken把响应结果return回来,createAnimation中将接收的结果打印出来是undefined
4、请问这是什么原因呢?
5、补充:
async createAnimation() {
const t = this;
this.viewDialog = true;
this.viewTitle = this.anaInput;
t.loading = true;
t.token = await t.getToken();
console.log(222,t.token)
}
这样写也不能获取到token,因为多处调用到getToken方法,怎么可以简便点,不需要重复写getToken中那几行代码
getToken是异步操作,执行时会等待返回。
console.log是同步的,并不会等待getToken执行完才执行,而是立即执行,由于getToken还未返回数据,所以就是undefined。
你打个断点跟一下,其实就明白了。