如何取消 Fetch 请求 All In One


如何取消 Fetch 请求 All In One

cancel http request

AbortController


const controller = new AbortController();

controller;
// AbortController {signal: AbortSignal}signal: AbortSignalaborted: falseonabort: nullreason: undefined[[Prototype]]: AbortSignal[[Prototype]]: AbortController

controller.abort();
// undefined

controller;
// AbortController {signal: AbortSignal}signal: AbortSignal {aborted: true, reason: DOMException: signal is aborted without reason at :1:12, onabort: null} [[Prototype]]: AbortController

https://developer.mozilla.org/en-US/docs/Web/API/AbortController

demo

let controller;
const url = "video.mp4";

const downloadBtn = document.querySelector('.download');
const abortBtn = document.querySelector('.abort');

downloadBtn.addEventListener('click', fetchVideo);

abortBtn.addEventListener('click', function() {
  if (controller) controller.abort();
  console.log('Download aborted');
});

function fetchVideo() {
  controller = new AbortController();
  const signal = controller.signal;
  fetch(url, { signal })
    .then(function(response) {
      console.log('Download complete', response);
    })
    .catch(function(e) {
      console.log('Download error: ' + e.message);
    });
}

https://mdn.github.io/dom-examples/abort-api/

refs


Flag Counter

?xgqfrms 2012-2020

www.cnblogs.com/xgqfrms 发布文章使用:只允许注册用户才可以访问!

原创文章,版权所有??xgqfrms, 禁止转载 ???,侵权必究??!