Package Exports
- promise-polyfill
- promise-polyfill/dist/polyfill
- promise-polyfill/dist/polyfill.min.js
- promise-polyfill/lib
- promise-polyfill/lib/polyfill
- promise-polyfill/src/index.js
- promise-polyfill/src/polyfill
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (promise-polyfill) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Promise Polyfill
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
CDN Polyfill Use
<script href="https://cdn.jsdelivr.net/npm/promise-polyfill@7/dist/polyfill.min.js"></script>
Downloads
Simple use
import Promise from 'promise-polyfill';
then you can use like normal Promises
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
});
If you would like to just polyfill, only if native doesn't exist.
import 'promise-polyfill/src/polyfill';
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
change this behavior by doing.
Promise._unhandledRejectionFn = <your reject error handler>;
If you would like to disable unhandled rejection messages. Use a noop like below.
Promise._unhandledRejectionFn = function(rejectError) {};
Testing
npm install
npm test
License
MIT