#javascript #rxjs
#javascript #rxjs
Вопрос:
Как завершить поток по условию, при этом излучая значение, при котором поток завершен?
const MAX_VALUE = 6;
const competePredicate = data => data <= MAX_VALUE;
let imitationsOfClientConnection = of( 0, 1, 2, 3, 4, 5 );
imitationsOfClientConnection.pipe(
scan((result, current) => result current, 0),
// <- what to write here?
).subscribe({
next: data => console.log(`You won: ${ data } points!`),
complete: () => console.log('complete')
});
Теперь вывод на консоль —
Вы выиграли: 0 очков!
Вы выиграли: 1 очко! Вы выиграли: 3 очка! Вы выиграли: 6 очков!
Вы выиграли: 10 очков!
Вы выиграли: 15 очков!
завершить
Какой код вам нужен, чтобы записать этот вывод на консоль, был следующим —
Вы выиграли: 0 очков!
Вы выиграли: 1 очко!
Вы выиграли: 3 очка! Вы выиграли: 6 очков!
завершить
Ответ №1:
takeWhile
должно сработать.
imitationsOfClientConnection.pipe(
scan((result, current) => result current, 0),
takeWhile(total => total <= MAX_VALUE)
).subscribe(//...
Комментарии:
1. Вы действительно пытались?