Hello AbortController
by Matt
JavaScript
const controller = new AbortController()
const sleep = (ms) => new Promise((res) => setTimeout(res, ms));
async function test(signal) {
if (signal.aborted) return
await sleep(2000)
if (signal.aborted) {
console.log("aborted")
return
}
console.log('not aborted')
}
async function test2(signal) {
return new Promise(async (resolve, reject) => {
let timeout
timeout = setTimeout(() => {
console.log('not aborted')
}, 2000)
signal.addEventListener("abort", () => {
// Stop the main operation
// Reject the promise with the abort reason.
reject(signal.reason);
console.log('reject')
clearTimeout(timeout)
});
})
}
test2(controller.signal)
setTimeout(() => {
controller.abort()
}, 1000)