【发布时间】:2017-07-25 22:43:18
【问题描述】:
我正在尝试学习 RxJS,并且我正在尝试构建一个我认为简单明了的示例。创建一个按间隔生成的随机数的 observable,然后使用基于该 observable 的另外两个 observable 来跟踪已看到的最低值和最高值。
rngStream 的行为似乎与预期一样,minStream 和 maxStream 似乎也都可以正确跟踪。我遇到的问题是,当它执行时,似乎 rngStream、minStream 和 maxStream 在每个间隔上都有不同的随机数。我正在尝试了解这是否符合预期,或者我只是设置不正确。
我的目标是这样的输出:
[27, 27, 27]
[13, 13, 27]
[90, 13, 90]
[42, 13, 90]
...
let rngStream = Rx.Observable
.interval(1000)
.map(() => Math.ceil(Math.random()*100))
.take(5);
// Track the lowest number we've seen.
let minStream = rngStream
.startWith(100)
.scan((x, y) => Math.min(x, y))
// Track the highest number we've seen.
let maxStream = rngStream
.startWith(0)
.scan((x, y) => Math.max(x, y))
Rx.Observable.zip(rngStream, minStream, maxStream)
.subscribe(console.log);
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.4.2/Rx.min.js"></script>
【问题讨论】: