2016-12-17 3 views
-1

Я хочу сделать бесконечный цикл с интервалом переменной с помощью rxjs Observable , так что я пытаюсь переписать эту функцию в rxjsrxjs бесконечный цикл с интервалом переменной

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?

ответ

1

Есть много способов, чтобы написать это в 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