What is the benefit of a 'promise' abstraction in CommonJS?
abstraction, commonjs, javascript, promise
Solution
While it is true that both will ultimately accomplish the same thing, the difference is that your second example is not asynchronous. For example, consider what happens if `JSON.parse(...)` turns out to be an extremely expensive operation; you'll have to hang until everything's finished, which may not always be what you want.
That's what promises get you: the powerful ability to defer the computation of the right answer until a more convenient time. As the name suggests, the construct "promises" to give you the result at some point, just not necessarily right now. You can read more about futures and promises work on a larger scale here.
Problem
I'm reading this article and the section on the promise abstraction seems a little overly complicated to me. The following is given as an example: ``` requestSomeData("http://example.com/foo") // returns a promise for the response .then(function(response){ // ‘then’ is used to provide a promise handler return JSON.parse(response.body); // parse the body }) // returns a promise for the parsed body .then(function(data){ return data.price; // get the price }) // returns a promise for the price .then(function(price){ // print out the price when it is fulfilled print("The price is " + price); }); ``` It seems to me that the following could provide the same result with fewer lines of code: ``` requestSomeData("http://example.com/foo") .requestHandler(function(response){ // parse the body var data = JSON.parse(response.body); // get the price var price = data.price; // print out the price print("The price is " + price); }); ```