Skip to content

Instantly share code, notes, and snippets.

@KEIII
Created January 28, 2021 14:34
Show Gist options
  • Save KEIII/c80e43ccb89f6e4560ef4a83f070045a to your computer and use it in GitHub Desktop.
Save KEIII/c80e43ccb89f6e4560ef4a83f070045a to your computer and use it in GitHub Desktop.
simple observable pattern
type Observer<T> = (value: T) => void;
export const observable = <T>() => {
const observers: Observer<T>[] = [];
return {
subscribe: (observer: Observer<T>) => {
observers.push(observer);
},
next: (value: T) => {
observers.forEach(observer => {
observer(value);
});
},
};
};
const a = observable<number>();
a.subscribe(console.log);
a.next(42);
a.next(123);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment