从另一个可观察数据发出数据后刷新间隔

时间:2017-09-26 17:33:30

标签: javascript rxjs observable intervals

我有两个可观察者

const refreshClick$ = Observable.fromEvent(this.btn, 'click').startWith('click')
const interval$ = Observable.interval(5000, 5000)

this.subscription = interval$
  .merge(refreshClick$)
  .flatMap(() => this.grabSomeData())
  .subscribe(newState => this.setState({newState}))

有没有办法在从refreshClick $ observable接收事件后重置间隔或延迟它?因此,在点击事件之后,setState方法将正常执行,但是间隔将在附加例如5S

1 个答案:

答案 0 :(得分:1)

您可以使用switchMap运算符。一旦新的点击进入并开始新的间隔可观察,它将完成间隔可观察。

const refreshClick$ = Observable.fromEvent(this.btn, 
                    'click').startWith('click');
const interval$ = Observable.interval(5000);

refreshClick$.switchMap(()=>interval$)
         .subscribe(x=>console.log(x));