An ultra light (<1k minified / gzipped) Promises / A+ implementation.
npm i wee-promise --save
WeePromise supports both deferred and resolver patterns:
function asDeferred() {
const deferred = new WeePromise();
doSomethingAsync(deferred.resolve);
return deferred;
}
function asResolver() {
return new WeePromise((resolve) => {
doSomethingAsync(resolve);
});
}
as well as ES6-style all
and race
methods:
const arr = getCollectionOfPromises();
WeePromise.all(arr).then((result) => {
// result is an array of all of the promise values in arr.
});
WeePromise.race(arr).then((result) => {
// result is the value of the first resolved promise in arr.
});
and can be extended to create objects that behave as A+ compliant promises:
class Gnarly extends WeePromise {
// ...
}
If you want to change WeePromise's async provider, just override WeePromise.async
:
WeePromise.async = (cb) => {
const img = new Image();
img.onload = img.onerror = cb;
img.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';
};
npm i && npm run build