Axios не возвращает данные при быстром запросе - PullRequest
0 голосов
/ 25 апреля 2019

Я использую vue в качестве внешнего интерфейса и lumen в качестве внутреннего, это мой код

export default {
   name: 'App',
   data() {
      myData: []
   },
   methods: {
      getData() {
         let self = this;
         this.axios.get('my_url_api').then( res => {
           self.myData = res.data;
           console.log(res.data.length); // I try to count my data after delete, nothing update
         }).catch( err => {
           console.log(err.response);
         });
      },

      _delete(){
         let self = this;
         this.axios.delete('my_url_api/'+dataId).then(() => {
            self.getData(); // myData not updated after delete
         }).catch( err => {
            console.log(err.response);
         });
      }

   }
}

myData: [] не обновляется после того, как я быстро создаю (axios.post), обновляю (axios.put) и удаляю (axios.delete), когда я проверяю свою базу данных, данные были удалены), но работает нормально, когда Я создаю обновление или удаляю данные, затем жду несколько секунд, чтобы создать, обновить или удалить снова. Как это исправить?

1 Ответ

2 голосов
/ 25 апреля 2019

Измените self.getData() на this.getData() внутри _delete() метод.

_delete(){
     this.axios.delete('my_url_api/'+dataId).then(() => {
        // use this, cause inside arrow function 'this' does not update
        setTimeout(() => {
           this.getData();
        }, 200); // wait 200 ms, then invoke getData()
     }).catch( err => {
        ...
     });
  }
...