如何基于RxJS实现无序Observable流的缓冲排序输出?
RxJS实现乱序Observable的延时有序输出方案咨询
我从Observable接收的消息有时会乱序,但每个消息都包含可用于排序的时间戳。由于不知道流何时结束,我希望能将元素按时间顺序输出,且可以接受1秒及以上的延迟。
我的思路是通过缓冲并排序元素来实现:保留约3条条目,排序后释放第一条,直到经过数毫秒或有新元素到达。
示例输入流
//Time item appears: example item: 14:01:01 {time: '14:00:00', name: 'olga'} 14:01:02 {time: '14:00:03', name: 'peter'} 14:01:03 {time: '14:00:02', name: 'ouma'} 14:01:05 {time: '14:00:06', name: 'kat'} 14:01:06 {time: '14:00:05', name: 'anne'} //... more to come
期望输出
//Time item appears: example item: 14:01:05 {time: '14:00:00', name: 'olga'} 14:01:06 {time: '14:00:02', name: 'ouma'} 14:01:07 {time: '14:00:03', name: 'peter'} 14:01:08 {time: '14:00:05', name: 'anne'} 14:01:09 {time: '14:00:06', name: 'kat'} // ... more to come
我自己尝试了一个实现方案,但不确定是否可以用RxJS的buffer、bufferCount等运算符来实现更优的方案,想请教有没有更好的解决办法?
内容的提问来源于stack exchange,提问作者Andresch Serj
相关产品推荐
相关产品推荐

