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

JavaScript Promises

Avatar for Lean Machine Lean Machine
September 04, 2013

JavaScript Promises

Avatar for Lean Machine

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); });