Skip to content

Commit

Permalink
feat(createStore): added immediate execution option
Browse files Browse the repository at this point in the history
  • Loading branch information
djalmajr committed May 19, 2023
1 parent 0eb384d commit 4d8a180
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion src/createStore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,12 @@ function handler() {
};
}

export function createStore<T extends object>(data: T): Store<T> {
type Options = {
immediate?: boolean;
};

export function createStore<T extends object>(data: T, opts?: Options): Store<T> {
const { immediate } = opts || {};
const fns = <Function[]>[];
const init = clone(data);

Expand All @@ -49,6 +54,7 @@ export function createStore<T extends object>(data: T): Store<T> {
const store = new Proxy(init, handler());
on('update', () => {
const data = omit('subscribe', store);
if (immediate) return fns.forEach((fn) => fn(data));
if (nextTickId) cancelAnimationFrame(nextTickId);
nextTickId = requestAnimationFrame(() => fns.forEach((fn) => fn(data)));
});
Expand Down

0 comments on commit 4d8a180

Please sign in to comment.