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