我通过基本的fetchSpecialityArray()
函数提取api请求:
fetchSpecialityArray(){
this.$http.get('http://127.0.0.1:8000/api/speciality')
.then(response => response.json())
.then(result => this.specialityTest = result).then(this.checkSpeciality())
},
然后在checkSpeciality()
方法中检查此请求是否完整:
checkSpeciality(){
console.log('check if complete and show array: ')
console.log(this.specialityTest)
},
不幸的是,我的控制台中有空数组。当我再次触发fetchSpecialityArray()
方法时,我在控制台中得到了正确的响应。
这种行为的原因是什么?如何更正我的代码才能使其正常工作?
答案 0 :(得分:3)
then(this.checkSpeciality())
您正在立即致电this.checkSpeciality
,然后将其返回值(undefined
,因为没有返回语句)传递给then()
。
您需要将函数传递给then()
。
由于this.checkSpeciality
使用this
,您需要捕获this
的正确值。您可以使用bind
创建一个具有正确值checkSpeciality
的所有this
的函数。
.then(this.checkSpeciality.bind(this))
答案 1 :(得分:1)
然后需要一个函数,在这里传递一个你调用的函数。您应该将函数调用到回调函数中,您可以在以下代码中看到:
.then(() => this.checkSpeciality())
否则,您可以在不调用函数的情况下传递函数。
.then(this.checkSpeciality)