Я пытаюсь использовать оператор takewhile с включенной опцией true, и я сталкиваюсь с поведением, которое не понимаю.Мне удалось выделить небольшой фрагмент кода, в котором я могу воспроизвести поведение здесь
import { from, BehaviorSubject } from 'rxjs';
import { map, takeWhile } from 'rxjs/operators';
const value$ = new BehaviorSubject<number>(1);
const source = value$.pipe(
map(x => `value\$ = ${x}`),
takeWhile(x => !x.includes('4'), /*inclusive flag: */true)
);
source.subscribe(x => {
console.log(x);
value$.next(4); // Strange behavior only in this case
});
объяснение: без включающего флага регистрируется «значение $ = 1», и поток завершается
НО, с включенным флагом true, он падает с исключением переполнения стека ![enter image description here](https://i.stack.imgur.com/53zb3.png)
Мой вопрос: почему вместо этого он проходит через takeWhile более одного раза?остановки после первого вхождения?
вот ссылка на скамейку, когда-либо это помогает понять: https://stackblitz.com/edit/rxjs-ag4aqx