From a5d20bfe7c24bdef728a200c080be2c651ae0036 Mon Sep 17 00:00:00 2001 From: pushkine Date: Wed, 15 Apr 2020 15:51:18 +0200 Subject: [PATCH] remove init variable --- src/runtime/store/index.ts | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/runtime/store/index.ts b/src/runtime/store/index.ts index cafb4e9d6b..80c7a5e8e0 100644 --- a/src/runtime/store/index.ts +++ b/src/runtime/store/index.ts @@ -150,18 +150,15 @@ const single = (store: SingleStore, controller: DeriverController): StartStop /** derived store StartStopNotifier function when given an array of stores */ const multiple = (stores: ArrayStore, controller: DeriverController): StartStopNotifier => set => { const values = new Array(stores.length); + let pending = 1 << stores.length; - let inited = false; - let pending = 0; - - const sync = () => inited && !pending && controller.update(values, set); const unsubs = stores.map((store, index) => subscribe( store, value => { values[index] = value; pending &= ~(1 << index); - sync(); + if (!pending) controller.update(values, set); }, () => { pending |= 1 << index; @@ -169,7 +166,9 @@ const multiple = (stores: ArrayStore, controller: DeriverController): StartSt ) ); - (inited = true), sync(); + pending &= ~(1 << stores.length); + controller.update(values, set); + return function stop() { unsubs.forEach(v => v()), controller.cleanup(); };