@tko/computed
Version:
TKO Computed Observables
20 lines (19 loc) • 615 B
JavaScript
// @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);
}