有没有办法在第一个事件触发后执行第二个事件?
在下面的示例中,我想在调用 touchmove 事件后使用滚动事件。
fromEvent(window, 'touchmove').pipe(
tap(() => this.scroll$.next(false),
debounceTime(100)
).subscribe(() => {
this.scroll$.next(true);
})
Run Code Online (Sandbox Code Playgroud)
如果您scroll$ Observable可以依赖其他可观察量并且不必是 a,Subject则可以让它直接依赖于fromEvent Observable.
private sroll$ = fromEvent$(window, 'touchmove').pipe(
switchMapTo(
merge(
of(false),
timer(100).pipe(mapTo(true))
)
)
)
Run Code Online (Sandbox Code Playgroud)
Observablescroll$由 Observable 触发fromEvent$(window, 'touchmove')。然后我们switchMapTo使用组合运算符merge:
false通过创建仅包含该值的 Observable 来立即返回该值 ( of(false))。timer触发的事件。true