#javascript #angular #typescript #rxjs
#javascript #угловой #typescript #rxjs
Вопрос:
Я хотел бы пропустить / игнорировать подписку на FromEvent(), наблюдаемую, когда условие истинно: когда this.currentPosition === this.vc.getScrollPosition()[1]
я не хочу подписываться на наблюдаемое, потому что оно прокручивается непосредственно к следующим элементам, и моя цель — дождаться, пока пользовательское взаимодействие перейдет к следующему элементу в моем интерфейсе..
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;
}
}
);
Ответ №1:
Вы можете отфильтровать его в канале.
fromEvent(window, 'scroll').pipe(
filter( () => this.currentPosition !== this.vc.getScrollPosition()[1] ),
distinctUntilChanged(),
debounceTime(1000)
)