javascript - 如何根据另一个事件流推迟 Observable 的发射?

标签 javascript rxjs observable dom-events

从数组中创建可观察值但仅根据另一个事件流的更改/计数(比如说单击)发出下一个可观察值的运算符是什么?

const scroller$ = Rx.Observable.of(1,2,3,4);
Rx.Observable.fromEvent(document, 'click'); // need help here
scroller$.subscribe(console.log) 

// click // 1

// click // 2

// click // 3

// click // 4

最佳答案

您可以使用zip来做到这一点:

const scroller$ = Rx.Observable.of(1, 2, 3, 4);
scroller$.zip(
  Rx.Observable.fromEvent(document, 'click'),
  (value, event) => value // Specify a projection function to ignore the event
).subscribe(console.log);

zip 的文档是 here ,但这……是一项正在进行的工作。

基本上,zip 以锁步方式组合输入可观察量发出的值。因此,当发出第一个事件时,它将与 scroller$ 中的第一个值组合并发出,并且在第二个事件发生之前不会再发出任何内容,依此类推。

zip 可以传递一个函数来投影组合值,因此如果您只对值感兴趣 - 而不是事件 - 您可以使用投影函数来忽略事件。

关于javascript - 如何根据另一个事件流推迟 Observable 的发射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46335016/

相关文章:

javascript - 将 JSP 参数传递给 javascript 在 IE8 中不起作用!

RXJS 等待所有 Observables 完成并返回结果

javascript - 使用 RxJS 限制异步请求

javascript - 在内联编辑的情况下, knockout 绑定(bind)不起作用

javascript - 意外的未定义作为 Observable 的订阅返回,其中需要对象

javascript - 使用 JavaScript 访问本地文件

javascript - exec 'node app' 在 gulp 任务中挂起

javascript - html5模式下的AngularJS路由错误

触发新警报时以编程方式关闭警报

dictionary - 可在 map 上观察以检测何时添加、更新或删除条目