JavaScript Promises


  • new Promise( /* executor function: */ function(resolve, reject) { })
  • promise.then(onFulfilled[, onRejected])
  • promise.catch(onRejected)
  • Promise.resolve(resolution)
  • Promise.reject(reason)
  • Promise.all(iterable)
  • Promise.race(iterable)


Promises are part of the ECMAScript 2015 specification and browser support is limited, with 88% of browsers worldwide supporting it as of July 2017. The following table gives an overview of the earliest browser versions that provide support for promises.

ChromeEdgeFirefoxInternet ExplorerOperaOpera MiniSafariiOS Safari

In environments which do not support them, Promise can be polyfilled. Third-party libraries may also provide extended functionalities, such as automated "promisification" of callback functions or additional methods like progress—also known as notify.

The Promises/A+ standard website provides a list of 1.0 and 1.1 compliant implementations. Promise callbacks based on the A+ standard are always executed asynchronously as microtasks in the event loop.