UNPKG

@tko/computed

Version:

TKO Computed Observables

20 lines (19 loc) 615 B
// @tko/computed 🥊 4.0.0-beta1.3 ESM import { pureComputed } from "./computed"; function kowhen(predicate, context, resolve) { const observable = pureComputed(predicate, context).extend({ notify: "always" }); const subscription = observable.subscribe((value) => { if (value) { subscription.dispose(); resolve(value); } }); observable.notifySubscribers(observable.peek()); return subscription; } export function when(predicate, callback, context) { const whenFn = kowhen.bind(null, predicate, context); return callback ? whenFn(callback.bind(context)) : new Promise(whenFn); }