Trochę poczytałem. Czyli jest tak:
- async/await powstało później, niż fetch
- asyns/awiat umożliwia zrobienie "pauzy" podczas wykonywania kodu
- async/await uprasza składnie, jeżeli mamy dużo zagnieżdżeń
Czyli w moim przypadku (odczytaj JSON i tyle) fetch teoretycznie wystarczy :)
Noooo, nie do końca.
async
/await
, czyli tak zwany konktekst asynchroniczny nie ma nic wspólnego z fetch()
, i nie ma znaczenia który był wcześniej. async
/await
zostały stworzone by uprościć składnie stwarzania Promise
ów. Dopisanie keyword'a async
zamienia niejawnie funkcję w Promise
. Wewnątrz funkcji która jest async
, korzystając z faktu że jest "async", możemy użyć innego Promise
a, i możemy to znów ukrócić, poprzedzając ją keywordem await
.
Innymi słow, zapis async
/await
, to jest po prostu krótszy zapis tworzenia Promise
ów.
Nie ma żadnej "pauzy", nie tak działa JavaScript. await
działa tak samo jak każdy inny Promise
, czyli po prostu wykonuje jakąś funkcję później, kładąc ją na koniec kontekstu.
Można używać async
/await
w połączeniu z fetch()
, dlatego że fetch()
po prostu zwraca Promise
, ale zadziała też z innymi funkcjami które go zwracają.
O fetch()
możesz przeczytać: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
O async
/await
możesz przeczytać tu: https://tc39.es/ecma262/multipage/ecmascript-language-functions-and-classes.html#sec-async-function-definitions