完成流并发出最后一个值

时间:2019-04-13 09:54:02

标签: 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 个答案:

答案 0 :(得分:0)

takeWhile应该可以解决问题。

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

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