Understanding promises in Node.js


From what I have understood there are three ways of calling asynchronous code:

  1. Events, e.g. request.on("event", callback);
  2. Callbacks, e.g. fs.open(path, flags, mode, callback);
  3. Promises

I found the node-promise library but I don’t get it.

Could someone explain what promises are all about and why I should use it?

Also, why was it removed from Node.js?

8/14/2019 2:05:52 PM

Accepted Answer

Promises in node.js promised to do some work and then had separate callbacks that would be executed for success and failure as well as handling timeouts. Another way to think of promises in node.js was that they were emitters that could emit only two events: success and error.

The cool thing about promises is you can combine them into dependency chains (do Promise C only when Promise A and Promise B complete).

By removing them from the core node.js, it created possibility of building up modules with different implementations of promises that can sit on top of the core. Some of these are node-promise and futures.

11/28/2010 2:05:45 PM

Since this question still has many views (like mine) I wanted to point out that:

  1. node-promise looks rather dead to me (last commit was about 1 year ago) and contains nearly no tests.
  2. The futures module looks very bloated to me and is badly documented (and I think that the naming conventions are just bad)
  3. The best way to go seems to be the q framework, which is both active and well-documented.

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow