Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何根据另一个事件流延迟可观测到的发射?_Javascript_Rxjs_Observable_Dom Events - Fatal编程技术网

Javascript 如何根据另一个事件流延迟可观测到的发射?

Javascript 如何根据另一个事件流延迟可观测到的发射?,javascript,rxjs,observable,dom-events,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

操作符如何从数组中生成一个可观察值,但仅根据另一个事件流的更改/计数(比如单击)发出下一个可观察值

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
的文档是,但它是。。。正在进行的工作

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


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

有没有更简单、程序化的方法来编写此文件?@Itaymav Malimovka如果您使用RxJS,我不明白为什么要这样做。我会说不,没有,因为它本质上是反应性的。它帮助我理解正在发生的事情,如果我在程序中看到它一次,我可以更容易地在脑海中翻译它,直到我发展出RxJS的思维方式。@cartant yay它起作用了!是否可以绑定另一个事件以使其倒退?如果你想倒退,我会问另一个问题,问另一个问题来解释你试图解决的基本问题是个好主意。您可能不需要任何与此答案中的代码类似的内容。相反,听起来更像是要跟踪数组中的偏移量。基于Web的解决方案可能更合适。