我在我的应用程序中对计算层进行排序时遇到问题。我正在使用 Akita 实体存储来管理状态,然后观察更改并通过可观察对象管道它们以生成 UI 状态。整体流程为:
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
(假设 distinctUntilChanged 在每个运算符之后)。
如何确保在任何组合之前计算 A..N?理想情况下,所有这些都在一个宏周期中,因此 UI 不会更新部分结果。
我尝试添加asapScheduler
为 combineLatest 的最后一个参数,但它似乎不起作用,在调用 combineLatest 之前更新了一些输入,而在触发更多调用之后更新了一些输入。
我还希望能够添加另一个级别的组合:
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 之前计算?