我在相关应用程序中使用以下库:Angular 4.x、ngrx 4.x、rxjs 5.4.x
在我的应用程序中,我能够从 websocket 获取一些数据,但对于某些数据,我必须使用 RESTful api。我正在通过 ngrx 在多个组件之间共享数据。现在我根据创建、更新和删除等事件重新获取数据。
我不希望对数据进行太多的并发修改,但我确实需要一种方法来手动或自动确保我的客户端状态与服务器匹配。我想进行修补客户端状态的乐观更新,而不是承担对相关状态片进行完整数据刷新的成本。
如果我不使用 ngrx,那么我可能只有一个服务,它会暴露一个如下所示的可观察对象,它会缓存 api 调用的最新结果并与所有订阅者共享它。它会偶尔更新结果,但前提是它有订阅者。
const interval = 1000;
let counter = 0;
// setup a timer that executes immediately and on a timer
let call = Rx.Observable.timer(0, interval)
// make the fake async call
.switchMap(() => Rx.Observable.of(counter++).delay(100))
.do(x => console.log('call', x))
// cache latest value and share the value with all subscribers
.publishReplay(1, interval)
// only connect (aka make the call) if there are more …Run Code Online (Sandbox Code Playgroud)