asynchronous-delay

0.0.1 • Public • Published

Asynchronous Delays

Note: This document makes use of the ECMA Script proposal Asynchronous Blocks.

Within an asynchronous block or function, the JavaScript's await keyword in JavaScript allows execution to "step out" of and "return to" a context. We take advantage of this to arbitrarily pause code execution for a specific amount of time.

Delay Function

Consider the following code.

async{
  //do something
  const result = await //do something asynchronous
  //do something with result
}

Because await operates on a promise, it pauses operation and resumes as soon as the promise resolves.

We can use setTimeout to create a promise that resolves after a specified amount of time. Further, there's no reason to capture the result of the promise.

async{
  //do something
  await new Promise(resolve=>setTimeout(resolve), /*specified amount of time*/)
  //do something with result
}

We can package this into a module for convenience:

import delay from "asynchronous-delay";
async{
  //do something
  await delay(/*specified amount of time*/);
  //do something with result
}

Event Loop

It is sometimes useful to use setTimeout without a second argument to force code to execute in the next event loop.

//do something
setTimeout(()=>{
  //do something in the next event loop.
})

A similar effect can be achieved using delay.

async {
  //do something
  await delay();
  //do something in the next event loop.
}

Readme

Keywords

none

Package Sidebar

Install

npm i asynchronous-delay

Weekly Downloads

2

Version

0.0.1

License

MIT

Last publish

Collaborators

  • johnhenry