假设我有一个拥有ID和实体的商店,我需要在它们发生变化时将它们组合起来。
const state = {
ids: [],
entities: {}
}
const store = new BehaviorSubject(state);
Observable.combineLatest(
store.map(state => state.ids).distinctUntilChanged(),
store.map(state => state.entities).distinctUntilChanged(),
(ids, entities) => {
return ids.map(id => entities[id])
}
).subscribe(console.log);
store.next({ids: [1], entities: {1: {id: 1}}})
上面代码的问题是选择器函数将被调用两次,因为实体和id都发生了变化。
有没有运营商来解决这个问题?如果没有,我怎样才能创建一个解决这个问题的方法呢?
我想到了一个特殊的测试。等待一段时间并将下一个()联合到一个。
注意:它应该支持添加,更新和删除。
zip操作符将解决,添加和删除,因为在这种情况下我正在更新ID和实体,但更新实体将无法工作。