JavaScript Promises

Asynchronous programming with Promises in JavaScript.

Promise Basics

function sum (a, b) {
   return Promise(function (resolve, reject) {
     setTimeout(function () {
       if (typeof a !== "number" || typeof b !== "number") {
         return reject(new TypeError("Inputs must be numbers"));
       }
       resolve(a + b);
     }, 1000);
   });
}

Using Promises

var myPromise = sum(10, 5);
myPromise.then(function (result) {
  document.write(" 10 + 5: ", result);
  return sum(null, "foo");              # Invalid data
}).then(function () {                   # Won't be called
}).catch(function (err) {               # The catch handler
  console.error(err);
});

Promise States

pending, fulfilled, rejected

Promise Methods

Promise.all(iterable)
Promise.race(iterable)
Promise.reject(reason)
Promise.resolve(value)