setTimeout pattern

by Artem

JavaScript

'use strict';

function makePrint() {
  let num = 0;
  let start = Date.now();

  function printNum() {
    console.log(num++);
  }
  return function() {
    let timer = setTimeout(function run() {
      if (num > 20) {
        console.log(Date.now() - start);
        return;
      }
      printNum();
      timer = setTimeout(run, 100);
    }, 100);
    printNum();
  };
}

let go = makePrint()();