Promises and Deferreds - How I Stared To Like Them

Lately I've started to believe that promises are really useful concept. I used to think of them as some mumbo-jumbo invented by folks who can't get the idea that a function can be stored in a variable and the problem they are trying to solve is easy enough to deal with without any libraries.

My first step to understand them was to read: You're Missing the Point of Promises

After that I started to see something in them but couldn't find any real need for them. At that time I joined a new company and I was lucky enough to participate in the first HackDay where we started to implement mashup site that needed to get data from a bunch of urls and then start UI.
It was a perfect use case for promises, when all data is downloaded ("when") we can call UI initialization. As we used jQuery to speed up hacking I used jQuery promises with ajax calls. We found really good post by Edwin Martin Deferred and promise in jQuery and I finally got the idea behind promises and deferred in practice and how to use them in jQuery.

A couple of weeks later I read Async JavaScript by Trevor Burnham. What I found there was another good example of promises (I really recommend this book! :) This was like a cherry on the pie.

Promises are a really elegant solution to complicated asynchronous code. You don't have to use them with all your ajax calls, or routing in Node.js but there are situations when it's really hard to manage your code without them.

Promises aren't really about removing asynchronous calls and callbacks, they just make it really easy to have a list of callbacks or one callback for many functions.

There is also a new specification called Promises/A+ that somewhat simplifies idea and API. If you're interested in promises you can find differences between Promises/A+ and CommonJS Promises/A on the official page:

I'm planning to show more about promises with code in future posts.

Share on Hacker News
Share on LinkedIn

← Home

Want to learn more?

Sign up to get a digest of my articles and interesting links via email every month.

* indicates required

Please select all the ways you would like to hear from Krzysztof Kula:

You can unsubscribe at any time by clicking the link in the footer of my emails.

I use Mailchimp as a marketing platform. By clicking below to subscribe, you acknowledge that your information will be transferred to Mailchimp for processing. Learn more about Mailchimp's privacy practices here.