#3. Zagadka JavaScript

Paweł Niedźwiecki

Ostatnio mieliśmy zasięgi dziś lekko podnosimy poziom i zachaczamy o asynchroniczność, co jest mega ciekawym tematem w JavaScript. 

Co warto wiedzieć, przed próbą udzielenia odpowiedzi ? 

  • Jaka jest różnica między funkcjami synchronicznymi, a asynchronicznymi ?
  • Jak działa Promise w JavaScript ?
  • Co uzyskujemy dzięki async/await ?

Zapoznaj się z kodem poniżej i daj znać jakie wartości uzyskamy

1 2 3 4 5 6 7 8 9 10 11 12 13 14 const delay = () => new Promise((resolve) => setTimeout(resolve, 2000)); async function displayScore(score) { await delay(); console.log(score); } async function processScores(scores){ scores.forEach(score => { await displayScore(score); }); } processScores([1, 2, 3, 4]);

Odpowiedź :

w tym przypadku wyświetlony zostanie błąd 

SyntaxError: await is only valid in async functions and the top level bodies of modules

Jest to związane ze sposobem w jaki obsługiwane są funkcje async/await

Mimo że funkcja processScores jest funkcją asynchroniczną, to funkcja anonimowa znajdująca się wewnątrz wywołania forEach jest synchroniczna.

Jeżeli użyjemy konstrukcji async/await wewnątrz funkcji synchronicznej, zostanie rzucony wyjątek.  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 const delay = () => new Promise((resolve) => setTimeout(resolve, 2000)); async function displayScore(score) { await delay(); console.log(score); } async function processScores(scores) { scores.forEach(async (score) => { await displayScore(score); }); } processScores([1, 2, 3, 4]);
Paweł Niedźwiecki

elektronika, programowanie, biznes, podróże

więcej
  • praca

    Software Developer

  • lokalizacja

    Warszawa, Polska

  • wiek

    31

Więcej odPaweł

  • Add article