一系列范围内可观察到的随机数序列

时间:2016-01-14 16:40:25

标签: javascript typescript observable rxjs rxjs5

如何使用rxjs observable在范围内创建可观察的随机数序列?

我可以使用range迭代一个范围。

例如:

Observable.range(0, 20)
    .flatMap(data => getImage(data))
    .map(data => this.image = data);

但是,我想让它连续生成序列的随机数,直到我强行停止。 只需遍历这些值,直到完成为止。

注意:我正在使用rxjs 5。哪个没有while

2 个答案:

答案 0 :(得分:1)

如果您有权访问generator functions,则可以使用Observable.from执行以下操作: (Typescript support

jsbin

function* generator(min, max){
  while (true) {
    yield Math.random() * (max - min) + min;
  }
}

Rx.Observable.from(generator(0, 9000))
  .take(42)
  .subscribe(value => console.log(value));

答案 1 :(得分:1)

这将在时间间隔内生成随机数。这正是我所需要的。

let mySubscription: Subscription<number> = Observable.interval(3000)
    .map(data => generateRandomNumber(...))
    .subscribe(
        data => console.log(data),
        error => console.log(error),
        () => console.log("complete")
    );

要停止观察者,只需取消订阅订阅。

mySubscription.unsubscribe();

generateRandomNumber()是一种只为我生成随机数的方法。这超出了问题的范围。