Завершить поток и выдать последнее значение - PullRequest
1 голос
/ 13 апреля 2019

Как завершить поток по условию, передавая значение, при котором поток завершен?

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 Ответ

0 голосов
/ 13 апреля 2019

takeWhile должен сделать трюк.

imitationsOfClientConnection.pipe(
  scan((result, current) => result + current, 0),
  takeWhile(total => total <= MAX_VALUE)
).subscribe(//...

https://stackblitz.com/edit/typescript-aycaxs?file=index.ts

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...