Отмените предыдущий запрос, используя axios с vue.js - PullRequest
0 голосов
/ 24 мая 2018

Я использую axios и vue.js. У меня есть Google, и я проверяю документы axios, но все еще не могу понять, как это сделать.

Ответы [ 3 ]

0 голосов
/ 08 ноября 2018

В этом примере текущий запрос отменяется при запуске нового.Сервер отвечает через 5 секунд, если новый запрос сработал до отмены старого.cancelSource указывает токен отмены, который можно использовать для отмены запроса.Для получения дополнительной информации обратитесь к документации axios .

new Vue({
  el: "#app",
  data: {
      searchItems: null,
      searchText: "some value",
      cancelSource: null,
      infoText: null
  },
  methods: {
    search() {
      if (this.searchText.length < 3)
      {
        return;
      }

      this.searchItems = null;
      this.infoText = 'please wait 5 seconds to load data';

      this.cancelSearch();
      this.cancelSource = axios.CancelToken.source();

      axios.get('https://httpbin.org/delay/5?search=' + this.searchText, {
        cancelToken: this.cancelSource.token }).then((response) => {
          if (response) {
            this.searchItems = response.data;
            this.infoText = null;
            this.cancelSource = null;
          }
        });
    },
    cancelSearch () {
      if (this.cancelSource) {
        this.cancelSource.cancel('Start new search, stop active search');
        console.log('cancel request done');
      }
    }
  }
})




  
  {{infoText}}
  
  {{searchItems}}
  
0 голосов
/ 26 декабря 2018

Сначала определите некоторые переменные

data: function () {
    return {
        request_source : ''
    }
},

Затем внутри метода

source = CancelToken.source();
if(this.request_source != '')
    this.request_source.cancel('Operation canceled by the user.');

this.request_source = source;

axios
   .get(
       URL,
          {
              params:{key1: value1},
              cancelToken: this.request_source.token
          }
    )
0 голосов
/ 24 мая 2018

Взгляните на отмену аксиосов

Также есть довольно хорошая библиотека здесь

Если вы все ещене понимаю, взгляните ниже:

<template>
  <div>
    <button @click="send">Send Request</button>
    <button @click="cancel">Cancel Request</button>
    {{message}}
  </div>
</template>

И скрипт:

<script>
import axios from 'axios'
const CancelToken = axios.CancelToken;
let cancel;

export default {
    data () {
    return {
        message: ''
    }
  },
    methods: {
    send () {
        this.message = 'Request is beign executed...'
        axios.get('here_put_the_url', {
        cancelToken: new CancelToken(function executor(c) {
          // An executor function receives a cancel function as a parameter
          cancel = c;
        })
      }).then(response => this.message = 'The response from server is:' + response)
    },
    cancel () {
        cancel()
      this.message = 'The request cancelled'
    }
  }
}

</script>

Пример с почтовым запросом:

        axios.post
        (
         'here_put_the_url', 
          { params_here }, 
          {
            cancelToken: new CancelToken(function executor(c) {
            // An executor function receives a cancel function as a parameter
            cancel = c;
          }
         )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...