mirror of
https://github.com/morten-olsen/morten-olsen.github.io.git
synced 2026-02-08 01:46:28 +01:00
28 lines
577 B
TypeScript
28 lines
577 B
TypeScript
import { Observable } from "../../observable";
|
|
|
|
const forEach = async <T extends Observable<any[]>>(
|
|
observable: T,
|
|
fn: (
|
|
value: T extends Observable<infer U>
|
|
? U extends Array<infer A>
|
|
? A
|
|
: never
|
|
: never
|
|
) => Promise<void>
|
|
) => {
|
|
const knownValues = new Set();
|
|
const update = async () => {
|
|
for (let value of await observable.data) {
|
|
if (knownValues.has(value)) {
|
|
continue;
|
|
}
|
|
await fn(value);
|
|
knownValues.add(value);
|
|
}
|
|
};
|
|
await update();
|
|
observable.subscribe(update);
|
|
};
|
|
|
|
export { forEach };
|