metoda then
zwraca Promise
, która pozwala na łańcuchowanie metod.
Jeśli funkcja przekazana jako funkcja obsługi do then
zwraca Promise
, odpowiednikPromise
zostanie wystawiony na kolejnythen
w łańcuchu metod. Poniższy fragment symuluje kod asynchroniczny za pomocą funkcji setTimeout
.,
gdy wartość jest zwracana z funkcji obsługithen
, zwraca ona wartośćPromise.resolve(<value returned by whichever handler was called>)
.
athen
wywołanie zwróci odrzuconą obietnicę, jeśli funkcja wyrzuci błąd lub zwróci odrzuconą obietnicę.
we wszystkich innych przypadkach zwracana jest obietnica rozwiązania. W poniższym przykładzie pierwsza then()
zwróci 42
zawinięta w obietnicę rozwiązania, mimo że poprzednia obietnica w łańcuchu została odrzucona.,
w praktyce często pożądane jest przechwytywanie odrzuconych obietnic zamiast używania składni then
, jak pokazano poniżej.
Możesz również użyć chaining, aby zaimplementować jedną funkcję z API opartym na obietnicy na innej takiej funkcji.
JeślionFulfilled
zwróci obietnicę, wartość zwracana przezthen
zostanie rozwiązana / odrzucona przez obietnicę.