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

JavaScript Promises

Lean Machine
September 04, 2013

JavaScript Promises

Lean Machine

September 04, 2013
Tweet

More Decks by Lean Machine

Other Decks in Programming

Transcript

  1. var  api  =  require('./obfuscated/api'); var  async  =  require('async'); async.parallel([  

     function(callback)  {        api('http//api.somesite.com/getCurrentUser',  function(err,  currentUser)  {            if  (err)  {                callback(err);            }  else  {                api('http//api.somesite.com/user/'  +  currentUser.id  +  '/friends',  callback);            }        });    },  function(callback)  {        api('http//api.somesite.com/listPeople',  callback);    } ],  function(err,  res)  {    var  currentUserFriends  =  res[0];    var  listPeople  =  res[1];    var  notFriends  =  listPeople.length  -­‐  currentUserFriends.length;    console.log("not  friended:  "  +  notFriends); });
  2. var  util  =  require('./obfuscated/util'); var  currentUser  =  util.api('http//api.somesite.com/getCurrentUser'); var  urlToCurrentUserFriends

     =  util.concatStrings('http//api.somesite.com/user/',                                                                                                  currentUser.get('id'),                                                                                                  '/friends'); var  currentFriends  =  util.api(urlToCurrentUserFriends); var  allPeople  =  util.api('http//api.somesite.com/listPeople'); var  notFriends  =  util.subtract(allPeople.get('length'),  currentFriends.get('length')); util.print(util.concatStrings('not  friended:  ',  notFriends));
  3. A promise is an object that represents the return value

    or the thrown exception that a function may eventually provide.
  4. var  api  =  require('./obfuscated/api'); var  async  =  require('async'); async.parallel([  

     function(callback)  {        api('http//api.somesite.com/getCurrentUser',  function(err,  currentUser)  {            if  (err)  {                callback(err);            }  else  {                api('http//api.somesite.com/user/'  +  currentUser.id  +  '/friends',  callback);            }        });    },  function(callback)  {        api('http//api.somesite.com/listPeople',  callback);    } ],  function(err,  res)  {    var  currentUserFriends  =  res[0];    var  listPeople  =  res[1];    var  notFriends  =  listPeople.length  -­‐  currentUserFriends.length;    console.log("not  friended:  "  +  notFriends); });
  5. var  util  =  require('./obfuscated/util'); var  currentUser  =  util.api('http//api.somesite.com/getCurrentUser'); var  urlToCurrentUserFriends

     =  util.concatStrings('http//api.somesite.com/user/',                                                                                                  currentUser.get('id'),                                                                                                  '/friends'); var  currentFriends  =  util.api(urlToCurrentUserFriends); var  allPeople  =  util.api('http//api.somesite.com/listPeople'); var  notFriends  =  util.subtract(allPeople.get('length'),  currentFriends.get('length')); util.print(util.concatStrings('not  friended:  ',  notFriends));
  6. var  util  =  require('./obfuscated/util'); var  currentUser  =  util.api('http//api.somesite.com/getCurrentUser'); var  urlToCurrentUserFriends

     =  util.concatStrings('http//api.somesite.com/user/',                                                                                                  currentUser.get('id'),                                                                                                  '/friends'); var  currentFriends  =  util.api(urlToCurrentUserFriends); var  allPeople  =  util.api('http//api.somesite.com/listPeople'); var  notFriends  =  util.subtract(allPeople.get('length'),  currentFriends.get('length')); util.print(util.concatStrings('not  friended:  ',  notFriends)); currentUserFriends.then(function(value)  {    console.log("current  user  friends:")    console.log(value); });