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

Skuteczna personalizacja SALESmanago zwiększa przychody z e-commerce
Skuteczna personalizacja SALESmanago zwiększa przychody z e-commerce

    Nowe inteligentne narzędzie powstało z potrzeby większej personalizacji, dzięki której zespoły e-commerce mogłyby tworzyć indywidualne doświadczenia klientów Jak pokazują wyniki z okresu wyprzedaży Black Friday, stosowanie technik personalizacji przyniosło sprzedawcom 19% więcej interakcji   Kraków, 15 stycznia 2025 r.:  SALESmanago – czołowa europejska platforma zarządzania zaangażowaniem klientów obsługująca ponad 3 tys. klientów – […]

SALESmanago nawiązuje współpracę z PrestaShop, aby rozszerzyć swoją ofertę inteligentnych rozwiązań na sektor eCommerce w Europie
SALESmanago nawiązuje współpracę z PrestaShop, aby rozszerzyć swoją ofertę inteligentnych rozwiązań na sektor eCommerce w Europie

    Współpraca stanowi kolejny krok – po niedawnym przejęciu Leadoo – w rozwoju platformy zarządzania zaangażowaniem klientów w Europie.   Kraków, 18 grudnia 2024 r.: SALESmanago, lider segmentu SaaS obsługujący ponad 3 tys. klientów, nawiązał strategiczną współpracę z PrestaShop – jedną z najpopularniejszych platform eCommerce w Europie, która wspiera ponad 300 tys. firm w […]

Skuteczne zarządzanie w erze „growth hackingu”
Skuteczne zarządzanie w erze „growth hackingu”

    W dzisiejszym jakże zmiennym cyfrowym świecie rola dyrektora generalnego znacząco ewoluowała.   Obecnie fundamentem pomyślnego rozwoju firmy na poszczególnych etapach stała się koncepcja „growth hackingu”. Przy czym nie chodzi już tylko o przetrwanie, ale też o to, by wyprzedzić konkurencję w warunkach, które wymagają od nas zwinnego działania i innowacyjności.   Rzecz jasna, na początku nasz cel […]

SALESmanago przejmuje Leadoo: powstaje największa w Europie platforma do zarządzania zaangażowaniem klientów
SALESmanago przejmuje Leadoo: powstaje największa w Europie platforma do zarządzania zaangażowaniem klientów

    Połączenie zaawansowanych narzędzi konwersji Leadoo z kompleksową platformą Customer Engagement SALESmanago Rozszerzona obecność w kluczowych regionach Europy: kraje nordyckie, Wielka Brytania, Benelux oraz Europa Środkowa, Wschodnia i Południowa   Kraków/Helsinki, 26 listopada 2024 – Ważna fuzja w sektorze e-commerce. SALESmanago, wiodąca platforma Customer Engagement (CEP) z siedzibą w Krakowie, ogłasza przejęcie fińskiej platformy […]

Nie czekaj: Dlaczego IV kwartał to idealny moment na pomnożenie efektów działań marketingowych dzięki SALESmanago
Nie czekaj: Dlaczego IV kwartał to idealny moment na pomnożenie efektów działań marketingowych dzięki SALESmanago

    Wkraczając w burzliwy, jak co roku, czwarty kwartał, wiele firm znajduje się sytuacji paradoksalnej. To najbardziej owocny okres w roku, obiecujący najwyższy ruch i sprzedaż, a jednocześnie właśnie wtedy wiele firm unika wdrażania nowych technologii marketingowych. W SALESmanago rozumiemy przyczyny tej wstrzemięźliwości, ale jesteśmy tutaj, aby rzucić wyzwanie mentalności „poczekaj do czwartego kwartału”. […]

Strategie, które powinien znać prezes każdej firmy e-commerce w erze „Growth Hackingu”
Strategie, które powinien znać prezes każdej firmy e-commerce w erze „Growth Hackingu”

    Autor: Brian Plackis Cheng, dyrektor generalny SALESmanago   Rozwój firmy w dzisiejszym i jakże zmiennym cyfrowym świecie to nie lada wyzwanie. Rola dyrektora generalnego ewoluowała – dziś fundamentem pomyślnego rozwoju firmy na poszczególnych etapach stała się koncepcja „growth hackingu”. Nie chodzi już tylko o przetrwanie, ale też o to, by wyprzedzić konkurencję w […]

eCommerce na przemian rozkwita i popada w stagnację
eCommerce na przemian rozkwita i popada w stagnację

    eCommerce jest kapryśny; popada w stagnację, po czym nagle rozkwita. Ścieżki klientów są nieliniowe. To wiemy na pewno. Bez użytecznych danych klientów i spersonalizowanych ścieżek zakupowych firmy eCommerce tracą prospekty i klientów, doprowadzają swoją markę do stagnacji i trwonią swoją przewagę konkurencyjną.   Korzystanie z danych zero-party i zaawansowanej analityki nie jest już […]

Focus Garden rozkwita z SALESmanago
Focus Garden rozkwita z SALESmanago

    Focus Garden, to lider w branży artykułów ogrodniczych, a ich sukces to opowieść o mocy skutecznego wykorzystania automatyzacji marketingu i strategicznego partnerstwa z SALESmanago.   W ciągu zaledwie roku, nasza współpraca z Focus Garden przyniosła zdumiewające rezultaty:   Imponujący zwrot z inwestycji (ROI) – 6108%  134-procentowy wzrost całkowitej sprzedaży i znaczący wzrost liczby […]

SALESmanago ogłasza zmiany na kluczowych stanowiskach: Nowy CEO i CRO
SALESmanago ogłasza zmiany na kluczowych stanowiskach: Nowy CEO i CRO

    SALESmanago, wiodąca platforma CDP i Marketing Automation, z entuzjazmem informuje o istotnych zmianach w swoim zespole kierowniczym. Zmiany mają na celu optymalizację procesu dostarczania rozwiązań dla segmentu średnich przedsiębiorstw.    Po 13 latach kierowania rozwojem firmy w roli Dyrektora Generalnego, współzałożyciel SALESmanago, Grzegorz Błażewicz, obejmuje nieoperacyjną rolę członka Rady Nadzorczej. Będzie tam odpowiadał […]

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 […]