Skip to content

Lightweight ES6 Promise polyfill for the browser and node. A+ Compliant

License

Notifications You must be signed in to change notification settings

vukan71/promise-polyfill

This branch is 112 commits behind taylorhakes/promise-polyfill:master.

Folders and files

NameName
Last commit message
Last commit date
Sep 1, 2016
Mar 19, 2016
Mar 19, 2016
Mar 5, 2014
Jan 13, 2016
Jul 20, 2016
Mar 5, 2014
Jul 20, 2016
Apr 8, 2016
Mar 19, 2016
Sep 1, 2016
Jul 25, 2016
Sep 1, 2016

Repository files navigation

Promises/A+ logo # Promise Polyfill [![travis][travis-image]][travis-url]

Lightweight ES6 Promise polyfill for the browser and node. Adheres closely to the spec. It is a perfect polyfill IE, Firefox or any other browser that does not support native promises.

For API information about Promises, please check out this article HTML5Rocks article.

It is extremely lightweight. < 1kb Gzipped

Browser Support

IE8+, Chrome, Firefox, IOS 4+, Safari 5+, Opera

NPM Use

npm install promise-polyfill --save-exact

Bower Use

bower install promise-polyfill

Downloads

Simple use

var prom = new Promise(function(resolve, reject) {
  // do a thing, possibly async, then…

  if (/* everything turned out fine */) {
    resolve("Stuff worked!");
  }  else {
    reject(new Error("It broke"));
  }
});

prom.then(function(result) {
  // Do something when async done
});

Deprecations

  • Promise._setImmediateFn(<immediateFn>) has been deprecated. Use Promise._immediateFn = <immediateFn>; instead.
  • Promise._setUnhandledRejectionFn(<rejectionFn>) has been deprecated. Use Promise._unhandledRejectionFn = <rejectionFn> instead. These functions will be removed in the next major version.

Performance

By default promise-polyfill uses setImmediate, but falls back to setTimeout for executing asynchronously. If a browser does not support setImmediate (IE/Edge are the only browsers with setImmediate), you may see performance issues. Use a setImmediate polyfill to fix this issue. setAsap or setImmediate work well.

If you polyfill window.setImmediate or use Promise._immediateFn = yourImmediateFn it will be used instead of window.setTimeout

npm install setasap --save
var Promise = require('promise-polyfill');
var setAsap = require('setasap');
Promise._immediateFn = setAsap;

Unhandled Rejections

promise-polyfill will warn you about possibly unhandled rejections. It will show a console warning if a Promise is rejected, but no .catch is used. You can turn off this behavior by setting Promise._setUnhandledRejectionFn(<rejectError>). If you would like to disable unhandled rejections. Use a noop like below.

Promise._unhandledRejectionFn = function(rejectError) {};

Testing

npm install
npm test

License

MIT

About

Lightweight ES6 Promise polyfill for the browser and node. A+ Compliant

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%