rxjs:如何通过观察均匀地分配响应的渲染空间
我正在Angular开发一个基于回合的游戏,它通过socket.io实现与后端通信。在我的组件中,我正在侦听来自服务器的几种类型的通信,每种通信都提供有关如何更新视图以反映服务器中数据的当前状态的信息 现在,更新会立即应用于组件的数据。但是,我更喜欢在渲染每个更新时有一定的延迟,这样用户就有时间看到每个更新的效果 (基本上我想做的事情,请参见顶部的图片) 我相信我可以通过subscribeOn操作符实现这一点,但不确定如何指定我的“interval”nrxjs:如何通过观察均匀地分配响应的渲染空间,rxjs,Rxjs,我正在Angular开发一个基于回合的游戏,它通过socket.io实现与后端通信。在我的组件中,我正在侦听来自服务器的几种类型的通信,每种通信都提供有关如何更新视图以反映服务器中数据的当前状态的信息 现在,更新会立即应用于组件的数据。但是,我更喜欢在渲染每个更新时有一定的延迟,这样用户就有时间看到每个更新的效果 (基本上我想做的事情,请参见顶部的图片) 我相信我可以通过subscribeOn操作符实现这一点,但不确定如何指定我的“interval”n const example = Rx.Ob
const example = Rx.Observable
.create(observer => {
observer.next(0);
observer.next(1);
observer.next(2);
setTimeout(() => {
observer.next(3);
observer.next(4);
observer.complete();
}, 2500);
});
const source = example
.subscribeOn(Scheduler.timeout);
source.subscribe(console.log);
使用concatMap操作符,如下所示:
const nInterval=500;
常量示例$=Rx.Observable.from([0,1,2])
.concat(可从([3,4])观测到的接收延迟(2500));
const source$=示例$
.concatMap(项目=>
可观察到的接收(项目)
康卡特先生(
Rx.可观察的('忽略')
.延迟(第九次)
.ignoreElements()
)
);
source$.subscribe(console.log)代码>
你能展示一些代码吗?你目前有什么不起作用的?如果没有收到4,会发生什么?似乎有两个独立的问题:随着时间的推移均匀地分布排放,并强制执行正确的顺序。这两个都很有趣,而且相当不平凡。我建议将问题一分为二。@arturgrzesiak-分隔-其他帖子在@Lansana-添加了我尝试的代码。我想如果你像这样使用计时器操作符,它会更可读一些:concatMapTo(Rx.Observable.timer(1000),(x,y)=>x)
。有没有办法使用TestScheduler创建与图片中的示例更匹配的示例?看起来rxjs4有一个TestScheduler可以完成这个任务(),但是很难找到rxjs5的等价物。