zpět k lekci

Chyba ve funkci setTimeout

Co myslíte? Spustí se .catch? Zdůvodněte svou odpověď.

new Promise(function(splň, zamítni) {
  setTimeout(() => {
    throw new Error("Ouha!");
  }, 1000);
}).catch(alert);

Odpověď zní: ne, nespustí:

new Promise(function(splň, zamítni) {
  setTimeout(() => {
    throw new Error("Ouha!");
  }, 1000);
}).catch(alert);

Jak bylo řečeno v této kapitole, kolem kódu funkce je „implicitní try..catch“. Všechny synchronní chyby tedy budou ošetřeny.

Zde však není chyba generována při běhu exekutoru, ale později. Příslib ji tedy nemůže zpracovat.