UNPKG

@typed/future

Version:
26 lines 864 B
import { Disposable } from '@typed/disposable'; import { provide } from '@typed/env'; import { fork } from './fork'; import { Future } from './Future'; export const all = (futures) => Future.create((reject, resolve, environment) => { const hasValues = Array(futures.length).fill(false); const values = Array(futures.length); const disposable = 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.None; } futures.forEach((f, i) => { disposable.addDisposable(fork(left, (b) => right(b, i), provide(f, environment))); }); return disposable; }); //# sourceMappingURL=all.js.map