Добрый день!
У меня есть BehaviorSubject'ы - render$, loop$.
this.service.render$
.pipe(switchMap(this.loop$))
.subscribe(x => console.log(x))
loop$ = () => new Observable((subscriber) => {
for(let i = 0, l = 10000; i < l; i++) {
// Здесь нужен флаг для предыдущей итерации, по которому луп прервался бы,
// т.к. пришло новое render$ значение и нету смысла ждать окончания предыдущего лупа
subscriber.next(i);
}
subscriber.complete();
});
С каждым новым значением render$, из-за switchMap(), предыдущий loop$ отписывается и подписывается заново. Однако это не отменяет саму for итерацию, типа "break". Возможно ли это и как?
Можете так же продублировать ответ
здесь за пойнты! Спасибо!
ПС: Может вместо лупа как-то использовать setInterval() с нулевым delay?