35 lines
1 KiB
JavaScript
35 lines
1 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.lazy = exports.LazyPromise = exports.allSerial = void 0;
|
|
function allSerial(funcs) {
|
|
return funcs.reduce((promise, func) => promise.then((result) => func().then((x) => result.concat(x))), Promise.resolve([]));
|
|
}
|
|
exports.allSerial = allSerial;
|
|
class LazyPromise extends Promise {
|
|
constructor(executor) {
|
|
super(() => {
|
|
/* ignore */
|
|
});
|
|
this._executor = executor;
|
|
}
|
|
then(onfulfilled, onrejected) {
|
|
this._promise = this._promise || new Promise(this._executor);
|
|
return this._promise.then(onfulfilled, onrejected);
|
|
}
|
|
catch(onrejected) {
|
|
this._promise = this._promise || new Promise(this._executor);
|
|
return this._promise.catch(onrejected);
|
|
}
|
|
}
|
|
exports.LazyPromise = LazyPromise;
|
|
function lazy(fn) {
|
|
return new LazyPromise(async (resolve, reject) => {
|
|
try {
|
|
resolve(await fn());
|
|
}
|
|
catch (e) {
|
|
reject(e);
|
|
}
|
|
});
|
|
}
|
|
exports.lazy = lazy;
|