Javascript sleep via standard, promise and async

3 methods run simultaneously. Check the fiddle console for output.

by David McClelland

JavaScript

// js before ES6
function sleep(milliseconds) {
  const date = Date.now();
  let currentDate = null;
  do {
    currentDate = Date.now();
  } while (currentDate - date < milliseconds);
}

console.log("JS Hello");
sleep(2000);
console.log("JS World!");

// JS ES6
function sleepPromise(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

console.log("I Promise");
sleepPromise(2000).then(() => { console.log("Promise to go to sleep..."); })
.then(() => {
sleepPromise(2000)
.then(() => {console.log('still sleeping...Promise!');})
});

//This looks nicer, but whatever code is using the sleep function needs to be marked as async.
function sleepAsync(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

async function delayedGreeting() {
  console.log("Async Good");
  await sleepAsync(2000);
  console.log("Async Morning!");
  await sleepAsync(2000);
  console.log("Async World!");
}

delayedGreeting();