Javascript 在特定条件下跳过/忽略事件订阅中的可观察项
当某个条件为真时,我想跳过/忽略订阅fromEvent()observable: 当Javascript 在特定条件下跳过/忽略事件订阅中的可观察项,javascript,angular,typescript,rxjs,Javascript,Angular,Typescript,Rxjs,当某个条件为真时,我想跳过/忽略订阅fromEvent()observable: 当this.currentPosition===this.vc.getScrollPosition()[1]时,我不想订阅observable,因为它直接滚动到下一个项目,我的目标是等待用户交互滚动到我界面上的下一个项目 fromEvent(window, 'scroll').pipe( distinctUntilChanged(), debounceTime(1000) ) .subscr
this.currentPosition===this.vc.getScrollPosition()[1]
时,我不想订阅observable,因为它直接滚动到下一个项目,我的目标是等待用户交互滚动到我界面上的下一个项目
fromEvent(window, 'scroll').pipe(
distinctUntilChanged(),
debounceTime(1000)
)
.subscribe(
(event) => {
const current = this.positions.find(e => e.name === this.currentSectionName);
const indexOfCurrent = this.positions.indexOf(current);
if (indexOfCurrent + 1 === this.positions.length) {
// stay in the same position if it's the last item
this.vc.scrollToPosition([0, current.position]);
this.currentPosition = current.position;
} else {
// move to next position if it's not the last item
const next = this.positions[indexOfCurrent + 1];
this.vc.scrollToPosition([0, next.position]);
this.currentPosition = next.position;
}
}
);
你们可以在管道中过滤它
fromEvent(window, 'scroll').pipe(
filter( () => this.currentPosition !== this.vc.getScrollPosition()[1] ),
distinctUntilChanged(),
debounceTime(1000)
)
你们可以在管道中过滤它
fromEvent(window, 'scroll').pipe(
filter( () => this.currentPosition !== this.vc.getScrollPosition()[1] ),
distinctUntilChanged(),
debounceTime(1000)
)