From 1a42804b2df0c443588863e77c1c4c619a33533b Mon Sep 17 00:00:00 2001 From: metamuffin Date: Sun, 1 Oct 2023 21:30:09 +0200 Subject: ovar wait_for --- src/observable.ts | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'src/observable.ts') diff --git a/src/observable.ts b/src/observable.ts index f00b845..15a1a2e 100644 --- a/src/observable.ts +++ b/src/observable.ts @@ -12,10 +12,8 @@ export class OVar { } get value() { return this._value } - set value(v: T) { - this._value = v; - this.observers.forEach(o => o(v)) - } + set value(v: T) { this._value = v; this.change() } + change() { this.observers.forEach(o => o(this._value)) } onchange(handler: (v: T) => unknown): () => void { this.observers.push(handler) @@ -31,4 +29,14 @@ export class OVar { this.onchange(v => uv.value = fn(v)) return uv; } + wait_for(val: T) { + return new Promise(r => { + const abort = this.onchangeinit(v => { + if (v == val) { + r() + abort() + } + }) + }) + } } -- cgit v1.2.3-70-g09d2