Obietnice w JavaScript | Wyjaśnione

Obietnice w JavaScript | Wyjaśnione
JavaScript to język programowania wysokiego poziomu, w którym kod jest wykonywany wiersz według wiersza, co oznacza, że ​​następny wiersz kodu jest wykonywany dopiero po całkowitym wykonaniu poprzedniego wiersza. Aby rozwiązać ten problem, JavaScript oferuje funkcje zwrotne, które są asynchroniczne równoważne funkcji.

Kod asynchroniczny jest wykonywany natychmiast i w przeciwieństwie do kodu synchronicznego, nie czeka na zakończenie poprzedniego wiersza kodu. Jednak gdy mamy do czynienia z wieloma operacjami asynchronicznymi, korzystanie z zwrotów zwrotnych nie jest dobrym wyborem, ponieważ kod staje się mylący, niemożliwy do opanowania i trudny do zrozumienia lub debugowanie. Stąd rozwiązaniem jest stosowanie obietnic.

W tym poście przejdziemy do koncepcji obietnic w JavaScript wraz z przykładami.

Jakie są obietnice?

Obietnica to operacja lub zadanie, które zostanie wykonane w przyszłości. Składnia obietnicy podano poniżej:

Składnia obietnicy:

niech myPromise = new obiec
// kod
);

Jak widać z powyższej składni obietnicy, konstruktor obietnicy przyjmuje jedynie funkcję wywołania zwrotnego jako argument. W funkcji wywołania zwrotnego mamy argumenty rozwiązania i odrzucania, w których rozdzielczość jest wywoływana, gdy operacje wykonywane w funkcji wywołania zwrotnej są skuteczne. Jeśli jednak operacja się nie powiodła, to zadzwoń odrzuć.

Mówiąc po prostu, przypuśćmy, że nadchodzą twoje urodziny, a twoja matka obiecuje, że daje ci nowy laptop. Nie otrzymałeś laptopa i nie możesz być naprawdę pewien, czy dostaniesz laptop, czy nie do urodzin. Twoja matka może kupić ci laptopa lub ona może zmienić zdanie i kupić coś innego. To jest obietnica w języku laika.

Każda obietnica ma trzy stany lub możliwości:

  • Oczekuje się: nie jesteś pewien, czy dostaniesz laptop, czy nie; nieokreślony.
  • Wypełniona: twoja matka kupuje laptopa; Wartość wyniku.
  • Odrzucono: Twoja matka nie kupuje ci laptopa; Obiekt błędu.

Zalety obietnic

  • Operacje asynchroniczne są obsługiwane w prostszy sposób
  • Czytelność kodu jest poprawiona, dlatego debugowanie staje się łatwe
  • Obsługa błędów jest łatwiejsza niż zdarzenia lub oddzwonienia.
  • Przepływ kontroli jest lepiej zdefiniowany przez kod asynchroniczny.

Przed przejściem na przykłady obietnicy przejrzyjmy kolejną koncepcję w obietnicy obietnic konsumenci którego funkcją jest konsumowanie obietnic poprzez rejestrację funkcji za pomocą:

  • .Następnie (): Gdy obietnica zostanie rozwiązana lub odrzucona, ta metoda jest wywoływana.
  • .catch (): Gdy obietnica zostanie odrzucona lub występuje błąd podczas wykonywania obietnicy, ta metoda jest wywoływana.

Przykład:

W tym przykładzie sprawdzimy, czy dwie liczby są równe, czy nie używają obietnic, a na podstawie tego, czy ta operacja zakończy się powodzeniem, czy nie, wyświetlimy dane wyjściowe.

// Obiecaj inicjalizację
// Obiecaj inicjalizację
varmypromise = newPromise (funkcja (rozdzielcz, odrzuć)
const num1 = 4;
const num2 = 4;
// Porównaj dwie liczby
if (num1 === NUM2)
// Gdy operacja się powiedzie
rozstrzygać();
w przeciwnym razie
// Gdy pojawia się błąd
odrzucić();

);
// Obiecaj konsumentów
moja obietnica.
Następnie (funkcja ()
konsola.log („Operacja udana”);
).
catch (funkcja ()
konsola.log („wystąpił błąd”);
);
  • Zainicjowaliśmy obietnicę z nazwą MyPromise i przedstawiliśmy funkcję wywołania zwrotnego.
  • W funkcji utworzyliśmy dwie liczby, które chcemy porównać
  • Wykorzystaliśmy instrukcję IF-ELSE, aby sprawdzić, czy liczby są równe, czy nie
  • A potem uwzględniliśmy konsumentów obietnicy
  • Jeśli operacja obietnicy zakończy się powodzeniem .Następnie zostanie wywołany przez konsumenta, a konsola wyświetli powodzenie operacji
  • Jeśli obietnica się nie powiodła, zobaczysz komunikat z napisem „Wystąpił błąd” na konsoli

Odkąd operacja się powiodła, widzimy Operacja Udana W dzienniku konsoli.

Zmieńmy teraz liczby zainicjowane w funkcji zwrotu wywołania, aby sprawdzić, czy funkcja połowów wykrywa błąd, czy nie.

// Obiecaj inicjalizację
varmypromise = newPromise (funkcja (rozdzielcz, odrzuć)
const num1 = 5;
const num2 = 4;
// Porównaj dwie liczby
if (num1 === NUM2)
// Gdy operacja się powiedzie
rozstrzygać();
w przeciwnym razie
// Gdy pojawia się błąd
odrzucić();

);
// Obiecaj konsumentów
moja obietnica.
Następnie (funkcja ()
konsola.log („Operacja udana”);
).
catch (funkcja ()
konsola.log („wystąpił błąd”);
);

Ponieważ liczby nie są teraz równe, funkcja reject () zostanie wywołana, a błąd zostanie buforowany przez funkcję połowów:

Wniosek

Obietnica to operacja zakończona w przyszłości i pomaga programistom wdrożyć kod asynchroniczny. Preferowane są obietnice niż funkcje zwrotne, ponieważ obietnice są znacznie bardziej czystsze, a zatem poprawia czytelność i debugowanie kodu, ma lepsze obsługę błędów, a także wiele operacji asynchronicznych jest lepiej obsługiwane z obietnicami. Obietnica może zostać spełniona, odrzucona lub jest w toku.

W tym poście przeszliśmy przez obietnice w JavaScript i wyjaśniliśmy obietnice za pomocą przykładu.