Ответ 1
По-прежнему остается открытым вопрос Все соответствующие обсуждения можно найти здесь.
Я использовал новый API извлечения вместо старого XMLHttpRequest
Это здорово, но мне не хватает одной важной функции, xhr.abort().
Я не могу найти информацию об этой функции для извлечения.
Спасибо.
UPDATE: hacky обходной путь для прерывания выборки https://github.com/Morantron/poor-mans-cancelable-fetch
В основном вы запускаете выборку в веб-рабочем столе и отмените веб-исполнителя, чтобы прервать выборку
По-прежнему остается открытым вопрос Все соответствующие обсуждения можно найти здесь.
Можно прервать выборку через AbortController:
export function cancelableFetch(reqInfo, reqInit) {
var abortController = new AbortController();
var signal = abortController.signal;
var cancel = abortController.abort.bind(abortController);
var wrapResult = function (result) {
if (result instanceof Promise) {
var promise = result;
promise.then = function (onfulfilled, onrejected) {
var nativeThenResult = Object.getPrototypeOf(this).then.call(this, onfulfilled, onrejected);
return wrapResult(nativeThenResult);
}
promise.cancel = cancel;
}
return result;
}
var req = window.fetch(reqInfo, Object.assign({signal: signal}, reqInit));
return wrapResult(req);
}
Пример использования:
var req = cancelableFetch("/api/config")
.then(res => res.json())
.catch(err => {
if (err.code === DOMException.ABORT_ERR) {
console.log('Request canceled.')
}
else {
// handle error
}
});
setTimeout(() => req.cancel(), 2000);
Ссылки: