Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[4Developers 2013] Okiełznać asynchroniczność w JavaScript przy wykorzystaniu jQuery i wzorca „Deferred”

[4Developers 2013] Okiełznać asynchroniczność w JavaScript przy wykorzystaniu jQuery i wzorca „Deferred”

Pomimo tego, że jQuery.Deferred zostało wprowadzone już jakiś czas temu jego zastosowanie wciąż rzadko wykracza poza najbardziej podstawowe scenariusze. W tej prezentacji przedstawię bliżej zarówno ogólny koncept wzorca „Deferred” jak i jego implementację w ramach biblioteki jQuery w celu zapoznania się z możliwościami zarządzania, synchronizowania i transformacji wyników asynchronicznego kodu. Oczywiście nie zabraknie przykładów.

Tomasz Pęczek

April 12, 2013
Tweet

More Decks by Tomasz Pęczek

Other Decks in Programming

Transcript

  1. • Wzorzec Deferred opisuje obiekt pełniący rolę proxy dla operacji,

    która mogła się już zakończyć lub nie. Wzorzec Deferred • Pozwala rozwiązać problem „kiedy” dla procesów asynchronicznych.
  2. • Część wzorca Deferred opisująca samą „obietnicę” poinformowania o wyniku

    operacji • Funkcjonuje jako samodzielny wzorzec • Posiada wyłącznie metody: .then(), .always(), .done(), .fail(), .progress() • deferred.promise() Promise
  3. • jQuery.when() Synchronizacja $.when( $.ajax('/pushToTwitter', { ... }), $.ajax('/pushToFacebook', {

    ... }), $.ajax('/pushToLinkedIn', { ... }) ) .done(...) .fail(...);
  4. • deferred.then() Transformacja i kolejkowanie $.ajax('...', { ... }) .then(function(response)

    { if (response.error) { return $.Deferred().reject(response); } return response; });