如何根据另一个事件流推迟Observable的排放?

时间:2017-09-21 03:29:11

标签: javascript rxjs observable dom-events

从数组中生成observable的运算符是什么,但只根据另一个事件流的更改/计数发出下一个可观察值,让我们说点击?

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

1 个答案:

答案 0 :(得分:1)

您可以使用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将输入observables发出的值组合在一起。因此,当第一个事件被发射时,它将与scroller$中的第一个值组合并发出,并且在第二个事件发生之前不会发出任何其他事件,等等。

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