metal-promise
/*!
* Promises polyfill from Google's Closure Library in ES6.
*
* Copyright 2013 The Closure Library Authors. All Rights Reserved.
*
* Promise support is not ready on all supported browsers,
* therefore core.js is temporarily using Google's promises as polyfill. It
* supports cancellable promises and has clean and fast implementation.
*/
Use
Simple use case
import CancellablePromise from 'metal-promise';
new CancellablePromise(function(resolve, reject) {
asyncFunction(function(err) {
if (err) {
reject(err);
}
else {
resolve();
}
});
})
.then(function() {
})
.catch(function(err) {
});
Progress tracking
In addition to Google Closure's implementation of Promise,
the ProgressPromise
class is also provided for tracking the progress of an
async process.
import {ProgressPromise} from 'metal-promise';
new ProgressPromise(function(resolve, reject, progress) {
progress(0.3);
progress(0.5);
progress(0.7);
progress(0.9);
setTimeout(function() {
resolve();
}, 100);
})
.progress(progress => {
})
.then(function() {
});
Note that the progress
function must be invoked with a number
between 0
and 1
.
progress(2);
It also cannot be invoked with a smaller number than the previous call.
progress(0.3);
progress(0.1);
Advanced use cases
To see more advanced documentation, please visit Google Closure
Library's documentation;
Setup
-
Install a recent release of NodeJS if you
don't have it yet.
-
Install local dependencies:
npm install
- Run the tests:
npm test
Contributing
Check out the contributing guidelines for more information.