Awesome
ES6 Promise polyfill
This is a polyfill of ES6 Promise. The implementation based on Jake Archibald implementation a subset of rsvp.js. If you're wanting extra features and more debugging options, check out the full library.
For API details and how to use promises, see the <a href="http://www.html5rocks.com/en/tutorials/es6/promises/">JavaScript Promises HTML5Rocks article</a>.
Notes
The main target: implementation should be conformance with browser's implementations and to be minimal as possible in size. So it's strictly polyfill of ES6 Promise specification and nothing more.
It passes both Promises/A+ test suite and rsvp.js test suite. And as small as 2,6KB min (or 1KB min+gzip).
The polyfill uses setImmediate
if available, or fallback to use setTimeout
. Use setImmediate polyfill by @YuzuJS to reach better performance.
How to use
Browser
To install:
bower install es6-promise-polyfill
To use:
<script src="bower_components/es6-promise-polyfill/promise.min.js"></script>
<script>
var promise = new Promise(...);
</script>
Node.js
To install:
npm install es6-promise-polyfill
To use:
var Promise = require('es6-promise-polyfill').Promise;
var promise = new Promise(...);
AMD
To install:
npm install es6-promise-polyfill
To use:
define(['es6-promise-polyfill'], function(Promise) {
var promise = new Promise(...);
});
Usage in IE<9
catch
is a reserved word in IE<9, meaning promise.catch(func)
throws a syntax error. To work around this, use a string to access the property:
promise['catch'](function(err) {
// ...
});
Or use .then
instead:
promise.then(undefined, function(err) {
// ...
});
License
Licensed under the MIT License.