zoukankan      html  css  js  c++  java
  • 取消Promise请求

    取消结束Promise的方法?

    1. 返回一个pending状态的Promise,原Promise链会终止
    Promise.resolve().then(() => {
        console.log('ok1')
        return new Promise(()=>{})  // 返回“pending”状态的Promise对象
    }).then(() => {
        // 后续的函数不会被调用
        console.log('ok2')
    }).catch(err => {
        console.log('err->', err)
    })
    
    1. Promise.race竞速方法
    
    let p1 = new Promise((resolve, reject) => {
        resolve('ok1')
    })
     
    let p2 = new Promise((resolve, reject) => {
        setTimeout(() => {resolve('ok2')}, 10)
    })
     
    Promise.race([p2, p1]).then((result) => {
        console.log(result) //ok1
    }).catch((error) => {
        console.log(error)
    })
    
    
    1. 当Promise链中抛出错误时,错误信息沿着链路向后传递,直至捕获
    Promise.resolve().then(() => {
        console.log('ok1')
        throw 'throw error1'
    }).then(() => {
        console.log('ok2')
    }, err => {     
        // 捕获错误
        console.log('err->', err)
    }).then(() => {   
        // 该函数将被调用
        console.log('ok3')
        throw 'throw error3'
    }).then(() => {
        // 错误捕获前的函数不会被调用
        console.log('ok4')
    }).catch(err => {
        console.log('err->', err)
    
    

    摘抄

    Axios如何取消请求?

    第一种通过CancelToken.source工厂方法创建cancel token

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

    第二种通过传递executor函数到CancelToken的构造函数来创建cancel token

    var CancelToken = axios.CancelToken;
    var cancel;
    
    axios.get('/user/12345', {
      cancelToken: new CancelToken(function executor(c) {
        // executor 函数接收一个 cancel 函数作为参数
        cancel = c;
      })
    });
    
    // 取消请求
    cancel();
    
  • 相关阅读:
    MCS-51系列单片机和MCS-52系列单片机有何异同
    51单片机指令表
    ROM、PROM、EPROM、EEPROM、Flash ROM分别指什么?
    用最简单的办法轻松区分无源晶振和有源晶振
    CE310A
    夏普sharp复印机安装视频及教导
    SHARP AR-2048D/2348D
    SHARP 加粉1
    SHARP 加粉
    SQL SERVER BOOK
  • 原文地址:https://www.cnblogs.com/bonly-ge/p/12930910.html
Copyright © 2011-2022 走看看