updated waitForChange storeHelper in svelte

This commit is contained in:
saifullah-N
2023-06-16 22:28:14 +05:30
parent c0d34a25ef
commit 8698cf77fd

View File

@@ -1,18 +1,19 @@
import { get, type Writable } from "svelte/store";
export function listenForChange<T>(writable: Writable<T>, cb: (value: T) => void) {
const priorValue = get(writable);
const unsubscribe = writable.subscribe((value) => {
if (value !== priorValue) {
unsubscribe();
cb(value);
}
});
}
export function waitForChange<T>(writable: Writable<T>): Promise<T> {
return new Promise((resolve) => {
listenForChange(writable, (value) => resolve(value));
let unsubscribe:()=>{};
const promise = new Promise(resolve => {
let receivedInitial = false;
let previousValue : any;
unsubscribe = writable.subscribe(value => {
if (!receivedInitial) {
receivedInitial = true;
previousValue = value;
} else if (value !== previousValue) {
resolve(value);
}
});
});
promise.then(unsubscribe);
return promise;
}