rxjs - 使用 RxJs 实现队列系统
问题描述
我们已经用 Javascript 实现了一个队列系统。
消费者记录项目并在内部将其插入队列(这是存储在会话存储中的数组)。
时间间隔用于使多个项目出队并将这些项目发送到后端。
我们如何使用 Rxjs 和流来实现这一点?
解决方案
const queue = new Rx.Subject();
const queueProcessing = queue
.mergeMap(i => Rx.Observable.of(i)
.do(val => console.log('processing item: ' + val))
.delay(2000) /* stub processing time*/
, 2) /* concurrency */
.subscribe();
queue.next('asdf');
queue.next('as');
queue.next('zxvc');
queue.next('`1`');
queue.next('zx');
queue.next('234');
queue.next('5');
queue.next('645');
queue.next('asdf');
queue.next('3');
queue.next('2');
queue.next('34');
queue.next('asdf');
queue.next('5');
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.5.1/Rx.js"></script>
包含一个演示“.mergeMap
处理”功能,它只是在延迟后发出值。每次您想将项目添加到队列中时,您.next()
都会将其添加到主题中。
推荐阅读
- r - r 函数:将所有参数打印为字符串。
- apache-flink - Apache Flink - 启用连接排序
- python - Python Selenium - 按类和文本查找元素
- javascript - 无法将动态引导选择添加到表
- r - 将 R Leaflet 热图颜色更改为红色
- javascript - 是什么导致此网页在加载时向下滚动?
- ruby-on-rails - 使用简单控制器的双重渲染错误
- python - 使用 numpy 中的列表或范围作为行
- c++ - 只读取二进制文件的第一行
- javascript - 如何确保插件菜单项是否正确灰显(启用/禁用)(javascript,Adobe Bridge)