vuejs获取api请求和.then()函数无法正常工作

时间:2018-04-12 13:14:30

标签: javascript vue.js

我通过基本的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()方法时,我在控制台中得到了正确的响应。

这种行为的原因是什么?如何更正我的代码才能使其正常工作?

2 个答案:

答案 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)