Implementing Thread.sleep equivalent in NodeJS using async await


As we know Javascript does not support Thread.sleep, but we can create one with similar behaviour using async, await. Following function shows how to do that.

async function sleep(ms) {
  var _resolve, _reject;
  var promise = new Promise((resolve, reject) => {
    _reject = reject;
    _resolve = resolve;
  });
  setTimeout(() => {
    logger.info('sleep completed')
    _resolve('Foo');
  }, ms);
  return promise;
}

Now you can use the sleep in your code with following line of code

await sleep(1000);