• axios取消请求


    AbortController

    从 v0.22.0 开始,Axios 支持以 fetch API 方式—— AbortController 取消请求:

    const controller = new AbortController();
    
    axios.get('/foo/bar', {
       signal: controller.signal
    }).then(function(response) {
       //...
    });
    // 取消请求
    controller.abort()
    

    CancelToken deprecated

    您还可以使用 cancel token 取消一个请求。

    Axios 的 cancel token API 是基于被撤销 cancelable promises proposal

    此 API 从 v0.22.0 开始已被弃用,不应在新项目中使用。

    可以使用 CancelToken.source 工厂方法创建一个 cancel token ,如下所示:

    const CancelToken = axios.CancelToken;
    const source = CancelToken.source();
    
    axios.get('/user/12345', {
      cancelToken: source.token
    }).catch(function (thrown) {
      if (axios.isCancel(thrown)) {
        console.log('Request canceled', thrown.message);
      } else {
        // 处理错误
      }
    });
    
    axios.post('/user/12345', {
      name: 'new name'
    }, {
      cancelToken: source.token
    })
    
    // 取消请求(message 参数是可选的)
    source.cancel('Operation canceled by the user.');
    

    也可以通过传递一个 executor 函数到 CancelToken 的构造函数来创建一个 cancel token:

    const CancelToken = axios.CancelToken;
    let cancel;
    
    axios.get('/user/12345', {
      cancelToken: new CancelToken(function executor(c) {
        // executor 函数接收一个 cancel 函数作为参数
        cancel = c;
      })
    });
    
    // 取消请求
    cancel();
    

    注意: 可以使用同一个 cancel token 或 signal 取消多个请求。

    在过渡期间,您可以使用这两种取消 API,即使是针对同一个请求:

    const controller = new AbortController();
    
    const CancelToken = axios.CancelToken;
    const source = CancelToken.source();
    
    axios.get('/user/12345', {
      cancelToken: source.token,
      signal: controller.signal
    }).catch(function (thrown) {
      if (axios.isCancel(thrown)) {
        console.log('Request canceled', thrown.message);
      } else {
        // 处理错误
      }
    });
    
    axios.post('/user/12345', {
      name: 'new name'
    }, {
      cancelToken: source.token
    })
    
    // 取消请求 (message 参数是可选的)
    source.cancel('Operation canceled by the user.');
    // 或
    controller.abort(); // 不支持 message 参数

    出处:https://www.axios-http.cn/docs/cancellation

  • 相关阅读:
    tomcat对sessionId的处理分析
    MySQL 5.5 新增SIGNAL异常处理
    jetty对sessionId的处理分析
    Python3.x和Python2.x的区别
    java actor模型和消息传递简单示例
    构建工具scons让一切变得简单
    HTML元素控件事件表
    开始新的旅途
    JS各种常见知识点
    C#代码与javaScript函数的相互调用
  • 原文地址:https://www.cnblogs.com/mengff/p/16790916.html
Copyright © 2020-2023  润新知