UNPKG

ccxt

Version:

A cryptocurrency trading API with more than 100 exchanges in JavaScript / TypeScript / Python / C# / PHP / Go

30 lines (29 loc) 902 B
// @ts-nocheck import { Unpromise } from "../../static_dependencies/watchable/src/unpromise.js"; export function Future() { let resolve = undefined, reject = undefined; const p = new Promise((resolve_, reject_) => { resolve = resolve_; reject = reject_; }); p.resolve = function _resolve() { // eslint-disable-next-line prefer-rest-params queueMicrotask(() => { resolve.apply(this, arguments); }); }; p.reject = function _reject() { // eslint-disable-next-line prefer-rest-params queueMicrotask(() => { reject.apply(this, arguments); }); }; return p; } function wrapFuture(aggregatePromise) { const p = Future(); // wrap the promises as a future aggregatePromise.then(p.resolve, p.reject); return p; } Future.race = (futures) => wrapFuture(Unpromise.race(futures));