promise-faker
Version:
Provides promise-like APIs but runs synchronously. This module is useful for controlling flows.
47 lines (36 loc) • 1.17 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
var _fakePromise = require('./fake-promise');
class Promise {
constructor(callback) {
if (typeof callback !== 'function') {
throw new TypeError(`Promise resolver ${callback} is not a function`);
}
const p = new _fakePromise.FakePromise();
const result = (0, _fakePromise.tryCatch)(callback, value => p[_fakePromise.RESOLVE](value), error => p[_fakePromise.REJECT](error));
// resolve or reject already called
if (!p[_fakePromise.PENDING]) {
return p;
}
// not called, but there is an error
if (result[_fakePromise.REJECTED]) {
return result;
}
// Promise<pending>
return p;
}
}
exports.default = Promise;
const {
resolve
} = _fakePromise.FakePromise;
const all = tasks => tasks.map(task => resolve(task, true));
const define = (object, key, value) => Object.defineProperty(object, key, {
value
});
define(Promise, 'resolve', resolve);
define(Promise, 'reject', _fakePromise.FakePromise.reject);
define(Promise, 'all', tasks => (0, _fakePromise.tryCatch)(all, tasks));
module.exports = exports['default'];
;