代码之家  ›  专栏  ›  技术社区  ›  Ghyath Darwish

更改路由时中止所有AXIOS请求使用Vue路由器

  •  3
  • Ghyath Darwish  · 技术社区  · 7 年前

    当我更改路由使用时,如何在完成之前中止/取消AXIOS请求? Vue路由器。

    当用户打开页面时,它会自动发送AXIOS请求以获取一些数据, 但是用户不等待得到响应,他正在通过Vue路由器更改路由 这将是许多AXIOS请求

    所以我的问题有什么解决办法吗

    1 回复  |  直到 7 年前
        1
  •  4
  •   Fab    7 年前

    我没有测试它,但这应该管用。

    基本上,您必须生成一个全局取消令牌

    const CancelToken = axios.CancelToken;
    const source = CancelToken.source();
    

    并通过在config参数中传递它来在所有请求中使用它

    获取请求:

    axios.get('/user/12345', {
      cancelToken: source.token
    }).catch(function(thrown) {
      if (axios.isCancel(thrown)) {
        console.log('Request canceled', thrown.message);
      } else {
        // handle error
      }
    });
    

    发布请求:

    axios.post('/user/12345', {
      name: 'new name'
    }, {
      cancelToken: source.token
    })
    

    然后,在Vue路由器中 beforeEach 导航保护您可以使用以下命令取消所有请求:

    source.cancel('Operation canceled by the user.');
    

    以下是用于取消的官方AXIOS指南: https://github.com/axios/axios#cancellation