У меня проблемы с последовательностью вычислений в моем приложении. Я использую хранилище сущностей Akita для управления состоянием, а затем наблюдаю за изменениями и пропускаю их через наблюдаемые объекты для генерации состояния пользовательского интерфейса. Общий поток выглядит следующим образом:
EntityStore.selectAll()
-> pluck A \ / combineLatest(A, B) -> map Q
-> pluck B | | combineLatest(A, C) -> map R
-> pluck C |-> -| combineLatest(B, E) -> map S
... | | ...
-> pluck N / \ combineLatest(C, D) -> map Z
(Предположим отличнуюUntilChanged после каждого оператора).
Как мне убедиться, что A..N вычисляются перед любой из их комбинаций? В идеале все в одном макро-цикле, чтобы пользовательский интерфейс не обновлялся с частичными результатами.
Я пробовал добавить asapScheduler
в качестве последнего параметра в combLatest, но, похоже, он не работает с некоторыми входами обновление до вызоваcommonLatest и некоторых после запуска дополнительных вызовов.
Я также хотел бы иметь возможность добавить еще один уровень комбинаций:
EntityStore.selectAll()
-> pluck A \ / combineLatest(A, B) -> map Q \ / combineLatest(Q, R) -> map W
-> pluck B | | combineLatest(A, C) -> map R | | combineLatest(Q, S) -> map X
-> pluck C |-> -| combineLatest(B, E) -> map S |-> -| combineLatest(S, T) -> map Y
... | | ... | | ...
-> pluck N / \ combineLatest(C, D) -> map U / \ combineLatest(R, U) -> map Z
Как мне убедиться, что A .. Все N вычисляются перед Q..U и аналогично Q..U перед W..Z?