我想使用rxjs Observable使用区间变量进行无限循环
所以我试图在rxjs中重写此函数

takeAWalk(player){
    setTimeout(() => {

      console.log("Player is walking...");

      takeAWalk(player);
    }, getRandomDelayBetween(1000, 2500));
}


我试过了

Observable
  .timer(0, getRandomDelayBetween(1000, 2500))
  .take(10)
  .timeInterval()
  .subscribe(res=>{
    console.log("player is walking ...");
  });


但问题是此值限制为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();


在此处查看示例:http://jsbin.com/levakipunu/edit?js,console

关于javascript - 带间隔变量的rxjs无限循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41197720/

10-12 13:01
查看更多