JavaScript · Senior · Pytanie 50 z 75
Dlaczego nie należy przekazywać funkcji async jako executora w new Promise(async (resolve) => ...)?
- ✓Poprawna odpowiedź: Błąd po
awaitnie odrzuci promise'a - zawiśnie on - 2Konstruktor
PromiserzucaTypeErrordla każdej funkcji async - 3To działa, ale executor i promise wykonują się dwukrotnie
Wyjaśnienie
Konstruktor ignoruje promise zwrócony przez asynchroniczny executor, więc wyjątek po await staje się nieobsłużonym odrzuceniem, a zewnętrzny promise zostaje pending. Jeśli w środku już jest await, opakowanie new Promise zwykle w ogóle nie jest potrzebne - wystarczy funkcja async.