12.取消请求

在请求的过程当中,结果还没有回来之前,我们可以通过代码手动取消请求

为了实现手动取消的效果,服务器端还是 3s 以后才会返回数据

app.get('/delay', (request, response) => {
  response.setHeader('Access-Control-Allow-Origin', '*')
  response.setHeader('Access-Control-Allow-Headers', '*')
  setTimeout(() => {
    response.send('HELLO IE')
  }, 3000);
})

通过 xhr 对象的 abort() 方法就可以手动取消请求

  xhr.abort();

 此时点击按钮发送请求等待 3s 返回结果的过程中,我们点击取消按钮就可以取消这个请求

整理如下

    const result = document.querySelector("#result");
    const btn1 = document.querySelector("#send");
    const btn2 = document.querySelector("#cancel");
    // 为了让 btn1 和 btn2 都能调用 xhr,所以写在外面
    let xhr = null;
    btn1.addEventListener("click", () => {
      xhr = new XMLHttpRequest();
      xhr.open("GET", "http://127.0.0.1:8000/delay");
      xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
      xhr.send();
      xhr.onreadystatechange = function () {
        if (xhr.readyState === 4) {
          if (xhr.status >= 200 && xhr.status < 300) {
            result.innerHTML = xhr.response;
          }
        }
      };
    });
    btn2.addEventListener("click", () => {
      xhr.abort();
    });

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值