范围内可观察的随机数序列
Observerable sequence of random numbers within a range
我如何使用 rxjs observable 在一定范围内创建可观察的随机数序列?
我可以使用 range
.
遍历一个范围
例如:
Observable.range(0, 20)
.flatMap(data => getImage(data))
.map(data => this.image = data);
但是,我想让它不断地为序列生成一个随机数,直到我强制它停止。 不是 只是遍历值直到完成。
注意:我正在使用 rxjs 5。其中没有 while
.
如果您有权访问 generator functions you could do something like this using Observable.from:
(Typescript support)
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));
这将在一定时间间隔内生成随机数。这正是我所需要的。
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()
是一种为我生成随机数的方法。这超出了问题的范围。
我如何使用 rxjs observable 在一定范围内创建可观察的随机数序列?
我可以使用 range
.
例如:
Observable.range(0, 20)
.flatMap(data => getImage(data))
.map(data => this.image = data);
但是,我想让它不断地为序列生成一个随机数,直到我强制它停止。 不是 只是遍历值直到完成。
注意:我正在使用 rxjs 5。其中没有 while
.
如果您有权访问 generator functions you could do something like this using Observable.from: (Typescript support)
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));
这将在一定时间间隔内生成随机数。这正是我所需要的。
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()
是一种为我生成随机数的方法。这超出了问题的范围。