Sobes.tech
Junior — Senior

Interaction of setTimeout and Promise with different delays

livecode

Task condition

It is necessary to explain the order in which messages will appear in the console when functions setTimeout and promises with different timeouts are used simultaneously.

(() => {
  const myPromise = (delay) => new Promise((res, rej) => {
    setTimeout(res, delay);
  });

  setTimeout(() => console.log("in setTimeout1"), 1000);
  myPromise(1000).then(res => console.log("in Promise 1"));

  setTimeout(() => console.log("in setTimeout2"), 100);

  myPromise(2000).then(res => console.log("in Promise 2"));

  setTimeout(() => console.log("in setTimeout3"), 2000);
  myPromise(1000).then(res => console.log("in Promise 3"));

  setTimeout(() => console.log("in setTimeout4"), 1000);
  myPromise(5000).then(res => console.log("in Promise"));
})();