JSFiddle - React, Tailwind, and code Playground

by JuanMa Garrido

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/co/4.1.0/index.js"></script>

JavaScript

function getAsyncRandomNumber( secondsDelay, cb ) {
  setTimeout( () => {
    const random = Math.floor( Math.random()*10 )	    	
    cb(random)
  }, secondsDelay*1000)
}

function getRandomNumber( secondsDelay ) {
  return new Promise( resolve => getAsyncRandomNumber(secondsDelay, resolve) ) 
}

const INITIAL_DELAY = 3

co( function *() {
    var randomNumber1 = yield getRandomNumber(INITIAL_DELAY)
    console.log(`After ${INITIAL_DELAY}s we got number ${randomNumber1}`)
    var randomNumber2 = yield getRandomNumber(randomNumber1)
    console.log(`After ${randomNumber1}s we got number ${randomNumber2}`)
    var randomNumber3 = yield getRandomNumber(randomNumber2)
    console.log(`[LAST] After ${randomNumber2}s we got number ${randomNumber3}`)
})