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)