刚入职那会,经常因为取不出来值去问师傅,其中大多数情况都是因为axios的值取不出来。总结之后发现,除了改变执行顺序之外,还可以通过箭头立即执行函数解决这个问题
首先我们来猜一下这种情况,打印的会是什么?
method () {
this.text = ''
axios请求.then(res => {this.text = '三火Sunfire'})
if (this.text === '') {
console.log('啥也没有呀')
} else if {
console.log('三火Sunfire')
}
}
答案:啥也没有呀
因为axios是异步的,this.text = ''后会跳过它直接执行后面的函数,导致axios里的值取不到
解决方法:箭头立即执行函数
method () {
this.text = ''
// this指向,也可以通过val值来传递参数
const self = this
// 箭头立即执行函数
const test = ((val) => {
return {
getText () {
axios请求.then(res => {this.text = '三火Sunfire'})
}
}
})(val)
test.getText()
if (this.text === '') {
console.log('啥也没有呀')
} else if {
console.log('三火Sunfire')
}
}
这样打印出来的就是我们要的值了