UNPKG

@typed/future

Version:
29 lines 1.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.all = void 0; const disposable_1 = require("@typed/disposable"); const env_1 = require("@typed/env"); const fork_1 = require("./fork"); const Future_1 = require("./Future"); exports.all = (futures) => Future_1.Future.create((reject, resolve, environment) => { const hasValues = Array(futures.length).fill(false); const values = Array(futures.length); const disposable = disposable_1.Disposable.lazy(); function left(a) { disposable.dispose(); return reject(a); } function right(b, index) { hasValues[index] = true; values[index] = b; if (hasValues.every(Boolean)) { return resolve(values); } return disposable_1.Disposable.None; } futures.forEach((f, i) => { disposable.addDisposable(fork_1.fork(left, (b) => right(b, i), env_1.provide(f, environment))); }); return disposable; }); //# sourceMappingURL=all.js.map