Obietnica za obietnicą, zagadka za zagadką

Obietnice powstały z myślą o ulepszeniu pracy z kodem asynchronicznym, z jakim mamy do czynienia w JavaScripcie. Ich podstawowe zalety to lepsza kontrola w zakresie synchronizacji wywołań, obsługa błędów oraz lepsza czytelność. Obiekt Promise został wprowadzony w ECMAScripcie 2015 (wcześniej ES6) w czerwcu 2015 roku Specyfikację można znaleźć tutaj, natomiast wsparcie prezentuje się następująco:

Jak widać, jeśli chcemy wspierać Internet Explorer, musimy posiłkować się polyfillem (można znaleźć go tutaj lub tutaj).

O czym w ogóle mowa? Promise jest obiektem, który jest używany jako symbol zastępczy dla ostatecznych wyników odroczonych i najczęściej asynchronicznych obliczeń. Przy utworzeniu, obietnica jest w stanie oczekiwania, a jej rezultat to undefined. Stan obietnicy p może być:

  • wypełniony, jeśli p.then(f, r) kolejkuje zadanie do wywołania f,
  • odrzucony, jeśli p.then(f, r) kolejkuje zadanie do wywołania r,
  • oczekujący, jeśli nie jest wypełniony ani odrzucony,
  • ustalony, jeśli nie jest oczekujący,
  • rozstrzygnięty, jeśli obietnica p została ustalona lub jest zablokowana, aby dopasować swój stan do stanu innej obietnicy.

A po co nam obietnice? Spójrzmy na poniższy przykład, w którym mamy funkcje zapisujące notatki i sztucznie wywołane opóźnienie 2000ms, które mogłoby mieć miejsce np. podczas przesyłania na serwer. Aby zawsze otrzymać aktualną listę notek, użyliśmy odwoływania się do callbacków, co jak widać szybko tworzy nam brzydkie schodki:

Jak tego uniknąć? Tu właśnie na pomoc przychodzą nam obietnice, które mogą uprościć powyższy kod do takiej oto postaci:

Przejdźmy w takim razie do rozgryzienia obietnic krok po kroku. Poniżej widzimy podstawową deklarację i użycie obiektu Promise:

Jak widać, cała rzecz przedstawia się dosyć intuicyjnie, więc bez większych wstępów przejdźmy do ćwiczeń – postaraj się odgadnąć, jaki będzie wynik, a rezultaty będą widoczne po najechaniu kursorem na rozmycie pod obrazem.

// 1

// 1

Jak dotąd wszystko jasne prawda? Więc jak myślisz, co dostaniemy poniżej:

// 1, dlatego, że promise oczekuje tylko jednego rezultatu, drugi dotrze już po jego rozwiązaniu

Skoro znasz już odpowiedź na powyższe zadania, jak uważasz, co zostanie wylogowane w takich sytuacjach:

// 1, dlatego, że Promise może być albo wypełniony, albo błędny, nigdy oba na raz – tutaj pierwszy był resolve

// 2, gdyż tym razem pierwszy był reject

Oprócz wyżej pokazanych metod na rozstrzyganie obietnic, mamy jeszcze kolejne, bardzo pomocne w sytuacjach, gdy używanych promise’ów jest kilka:

Teraz, gdy już o obietnicach wiemy więcej, czas pójść o krok (lub parę) dalej :) Przyjrzyjmy się poniższym przykładom:

// 1 1 1, gdyż ustawiliśmy 3 listenery na sukces

// 1 undefined undefined, gdyż kolejne funkcje nic nie zwracają!

// 1 2 3

// 1 2 4

A teraz, mając w pamięci powyższe przykłady, ten poniżej powinien wylogować… no właśnie, co? Udało się? ;)

// 1 catch wywołany zostanie tylko przez pierwszego rejecta – aby wejść do kolejnych funkcji musielibyśmy mieć .then() jak wyżej lub zwrócić błąd

Tak więc po raz kolejny zbierzmy wszystkie zdobyte informacje do tej pory, i pochylmy się nad poniższym kodem:

// 1 2 3

Użyjmy teraz do przykładu obiektu Error:

// 1 2 Error: 3

A co w przypadku zwrócenia Promise.resolve()?

// 10 20

Jeszcze jeden przykład z Erorrem:

// 1 Error: 2 4

Jak myślisz, jaką kolejność otrzymamy tutaj?

// 1 2 3

Mam nadzieję, że czujesz się już w miarę pewnie, gdyż zaraz przyspieszamy! Weźmy pod lupę takie przykłady:

// 1 3 2 4

// 1 3 4 2

A teraz wróćmy do użycia setTimeout(). Co otrzymamy poniżej? Hmm…

// automation marketing SALESmanago

Skoro tak, to analogicznie poniższy przykład powinien dać…

// manago SALES

I na tym zakończymy dzisiejsze ćwiczenia! Postaraj się teraz wykorzystać w praktyce zdobytą wiedzę i dziel się nią z innymi, powodzenia!

Jędrzej Jurek
Front-End Developer

SALESmanago o platforma Customer Engagement, zaprojektowana dla efektywnych i głodnych sukcesu zespołów marketingowych w eCommerce. Dla marketerów, którzy pragną być zaufanymi partnerami dla swoich CEO. Z naszego rozwiązania korzysta ponad 2000 biznesów online średniej wielkości w 50 krajach oraz liczne globalne marki takie jak Starbucks, Vodafone, Lacoste, New Balance czy Victoria's Secret.

SALESmanago zapewnia maksymalizację wzrostu przychodów oraz poprawy wskaźników KPI dla eCommerce wykorzystując trzy zasady: (1) Customer Intimacy, aby stworzyć autentyczne relacje z klientami w oparciu o dane Zero- i First-Party, (2) Precision Execution, aby zapewnić doskonałe omnichannelowe doświadczenie klienta dzięki hiper-personalizacji oraz (3) Growth Intelligence, która łączy wskazówki opracowane przez specjalistów oraz AI, umożliwiając pragmatyczne i szybkie podejmowanie decyzji w celu maksymalizacji efektu.

Czytaj więcej na: www.salesmanago.pl

30 trików i porad dotyczących korzystania z szablonów e-mail, które zostawią konkurencję w tyle.
30 trików i porad dotyczących korzystania z szablonów e-mail, które zostawią konkurencję w tyle.

    Jak prześcignąć konkurencję eCommerce za pomocą czegoś tak prostego jak szablony wiadomości e-mail? Chcemy czy nie, email marketing pozostaje potężnym narzędziem do angażowania klientów, zwiększania sprzedaży i ostatecznie – wyprzedzania konkurencji. Dzięki odpowiednim strategiom i dobrze opracowanym szablonom e-mailowym można skutecznie komunikować się z odbiorcami, budować trwałe relacje i zwiększać zyski.   Poniżej […]

Jak Pitbull West Coast Przełamał Konwencje z SALESmanago
Jak Pitbull West Coast Przełamał Konwencje z SALESmanago

  Pitbull West Coast stanęło przed wyzwaniem – jak wyróżnić się na zatłoczonym rynku i jeszcze bardziej zaangażować swoją społeczność? Odpowiedzią była współpraca z SALESmanago a zwrot z inwestycji (ROI) osiągnął 2947%   Pitbull West Coast to marka odzieżowa, zainspirowana kulturą uliczną i sportami walki. Budując swoją przewagę konkurencyjną i strategie zaangażowania społeczności, firma napotkała […]

Każdy procent ma znaczenie, czyli jak poprawić współczynnik konwersji w Twojej firmie
Każdy procent ma znaczenie, czyli jak poprawić współczynnik konwersji w Twojej firmie

    W coraz bardziej konkurencyjnym świecie eCommerce istnieją pewne nakazy i zakazy, jeśli chodzi o zachęcanie klientów do dokonywania zakupów w Twoim sklepie. Czynność ta nazywana jest konwersją i jest to najważniejszy wskaźnik, który musisz obserwować, planując budowanie swojej firmy i zwiększanie przychodów – w końcu sklep internetowy z milionami odwiedzających, który nie sprzedaje, […]

Kręcisz z AI? Pamiętaj, bezpieczeństwo zawsze na pierwszym miejscu!
Kręcisz z AI? Pamiętaj, bezpieczeństwo zawsze na pierwszym miejscu!

    W świecie, w którym technologia i handel coraz bardziej się przenikają, firmy eCommerce znalazły się na rozdrożu, szukając sposobu na romans z generatywną sztuczną inteligencją. Niedawno opublikowany raport Gartnera, zatytułowany „4 Ways Generative AI Will Impact CISOs and Their Teams”, dostarcza informacji na temat przyszłości cyberbezpieczeństwa w erze AI. Zatem, entuzjaści eCommerce, jeśli […]

Top 10 porażających statystyk dotyczących hipersegmentacji, które musisz znać
Top 10 porażających statystyk dotyczących hipersegmentacji, które musisz znać

    Segmentacja jest znana marketerom już od dłuższego czasu. Jednak w większości przypadków, przypomina raczej nieoszlifowany diament. Wraz z ciągłymi zmianami w technologii wykorzystywanej do zbierania danych, nowymi pokoleniami konsumentów, którzy wymagają wysoce spersonalizowanych treści oraz z ostatnimi zmianami w zachowaniach zakupowych, które spowodował COVID-19, aktualizacja sposobów segmentacji danych stała się kluczowa. Segmentowane kampanie […]

5 super zaawansowanych i turbo-skutecznych segmentacji dla eCommerce
5 super zaawansowanych i turbo-skutecznych segmentacji dla eCommerce

    Hipersegmentacja w eCommerce to trend, który ma szansę zdominować rynek na dłuższy czas. Segmentacja 1:1 pozwala tworzyć na masową skalę oferty dopasowane indywidualnie do każdego odbiorcy. Ma to wpływ na przychody w sklepie i CLV jego klientów. Jak konkretnie można zastosować hiperpersonalizację w różnych typach eCommerce? Oto 5 super zaawansowanych i turbo-skutecznych segmentacji. […]

Zerkamy w przyszłość: analityka predyktywna w SALESmanago
Zerkamy w przyszłość: analityka predyktywna w SALESmanago

    W stale ewoluującym świecie eCommerce, firmy nieustannie poszukują innowacyjnych sposobów na zwiększenie swojej przewagi konkurencyjnej. Trudno przecenić tu rolę analityki predyktywnej. Jej wieloaspektowość ma kluczowe znaczenie dla rozwoju i sukcesu branży.   Szklana kula dla marketingowców   Analityka predyktywna to gałąź analityki danych, która wykorzystuje dane historyczne, algorytmy statystyczne oraz technologię uczenia maszynowego […]

[NAGRANIE WEBINARU] „Przygotuj swój eCommerce na 2024 rok: Doświadczenia z 2023 roku, najważniejsze trendy i innowacje technologiczne dla sklepów internetowych”
[NAGRANIE WEBINARU] „Przygotuj swój eCommerce na 2024 rok: Doświadczenia z 2023 roku, najważniejsze trendy i innowacje technologiczne dla sklepów internetowych”

    Już teraz możesz obejrzeć nagranie naszego ostatniego webinaru, poprowadzonego przez Director Solutions Consulting w SALESmanago, Aleksandra Skałkę.    Kliknij i odkryj:   – Taktyki wdrożone przez najlepiej prosperujące firmy eCommerce w 2023 r. – Najważniejsze trendy w eCommerce na lata 2023/2024: Sztuczna inteligencja, prywatność danych, dane stron zerowych i inne. – Nowe technologie […]

[Nowa funkcjonalność] Kreaktor Importu Kontaktów: funkcjonalna baza kontaktów bez komplikacji
[Nowa funkcjonalność] Kreaktor Importu Kontaktów: funkcjonalna baza kontaktów bez komplikacji

Przedstawiamy Kreator Importu Kontaktów: płynny początek przygody z CDP. Importuj kontakty bez wysiłku dzięki innowacyjnemu mapowaniu i mechanizmom odpornym na błędy. Przekształć surowe dane w dostosowaną do twoich potrzeb, funkcjonalną bazę danych. Uzyskaj niezależność od IT i zoptymalizuj działania marketingowe. Szybko importuj, oznaczaj i poprawiaj dane, aby uzyskać ponadprzeciętne wyniki.