Mur*_*sli 1 javascript rxjs rxjs5
我想使用 rxjs Observable 使用区间变量进行无限循环,因此我尝试在 rxjs 中重写此函数
takeAWalk(player){
setTimeout(() => {
console.log("Player is walking...");
takeAWalk(player);
}, getRandomDelayBetween(1000, 2500));
}
Run Code Online (Sandbox Code Playgroud)
我试过
Observable
.timer(0, getRandomDelayBetween(1000, 2500))
.take(10)
.timeInterval()
.subscribe(res=>{
console.log("player is walking ...");
});
Run Code Online (Sandbox Code Playgroud)
但是这个问题是有限到 10 并且间隔是常数(getRandomDelayBetween只调用一次)。
我应该使用哪些运算符来产生相同的函数takeAWalk功能?
有很多方法可以在 rxjs 中编写它,您可以尝试这样的方法:
Rx.Observable.of(null)
.concatMap(() => Rx.Observable.timer(Math.random() * 1500))
.do(() => console.log("player is walking ..."))
.repeat() // optionally .repeat(10)
.subscribe();
Run Code Online (Sandbox Code Playgroud)
在这里查看示例:http : //jsbin.com/levakipunu/edit?js,console