Slide 1

Slide 1 text

jQuery Deferreds & Promises Eli Perelman @eliperelman

Slide 2

Slide 2 text

What are deferreds?

Slide 3

Slide 3 text

Provide a system to register callbacks into neatly managed queues DEFERREDS

Slide 4

Slide 4 text

WITHOUT DEFERREDS var  validateUser  =  function  (  username,  password,  callback  )  {          if  (  username  ===  ‘bob’  &&  password  ===  ‘123’  )  {                  callback(  ‘success’  );          }  else  {                  callback(  ‘failure’  );          }   };   validateUser(  ‘bob’,  ‘123’,  function  (  result  )  {          if  (  result  ===  ‘success’  )  {                  location  =  ‘/dashboard’;          }  else  {                  showError(  ‘Invalid  login.’  );          }   });    

Slide 5

Slide 5 text

WITH DEFERREDS var  validateUser  =  function  (  username,  password  )  {          var  deferred  =  $.Deferred();          if  (  username  ===  ‘bob’  &&  password  ===  ‘123’  )  {                  deferred.resolve();          }  else  {                  deferred.reject();          }          return  deferred.promise();   };   validateUser(  ‘bob’,  ‘123’  )          .done(  function  ()  {                  location  =  ‘/dashboard’;          })          .fail(  function  ()  {                  showError(  ‘Invalid  login.’  );          });    

Slide 6

Slide 6 text

Deferreds work with synchronous AND asynchronous functions.

Slide 7

Slide 7 text

Since jQuery 1.5, the $.ajax module uses deferreds.

Slide 8

Slide 8 text

What are promises?

Slide 9

Slide 9 text

Provide a common API for consuming code to register callbacks, sync or async. PROMISES

Slide 10

Slide 10 text

Deferreds Promises .then .then .done .done .fail .fail .always .always .reject .resolve .pipe .pipe .promise .promise .isResolved .isRejected

Slide 11

Slide 11 text

Coding time!