From 17fbd41f033ca7aa11f91785904220ed509de1f3 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Mon, 29 Jan 2024 11:14:32 +0100 Subject: liftA2 --- src/observable.ts | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/observable.ts') diff --git a/src/observable.ts b/src/observable.ts index a9e23e8..bd66963 100644 --- a/src/observable.ts +++ b/src/observable.ts @@ -41,6 +41,13 @@ export class OVar { uv.weak = true return uv; } + liftA2(other: OVar, fn: (x: T, y: U) => V): OVar { + const uv = new OVar(fn(this.value, other.value)) + uv.cancel_source = this.onchange(x => uv.value = fn(x, other.value)) + uv.cancel_source = other.onchange(y => uv.value = fn(this.value, y)) + uv.weak = true + return uv; + } wait_for(val: T) { return new Promise(r => { const abort = this.onchangeinit(v => { -- cgit v1.2.3-70-g09d2