通过 Promise.race 中断 Javascript 请求
function getRndInteger(min, max) {
return Math.floor(Math.random() * (max - min)) + min;
}
function createPromise(fn, ...args) {
let timer = null;
return [
new Promise((resolve) => {
timer = setTimeout(() => {
fn(...args);
resolve();
}, getRndInteger(1000, 20 * 1000));
}),
timer,
];
}
function abortPromise(promiseRequest) {
const [promise, timer] = promiseRequest;
clearTimeout(timer);
const abort = Promise.reject(new Error(`Rejected the promise`));
Promise.race([promise, abort])
.then(() => {
console.log("abort failure");
})
.catch((error) => {
console.log(error);
});
}
const request = () => {
console.log("promise done");
};
const promiseRequest = createPromise(request);
setTimeout(() => {
abortPromise(promiseRequest);
}, 5000);