从另一个可观察对象发出数据后的刷新间隔
Refresh interval after emitting data form another observable
我有两个可观察对象
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 方法将正常执行,但间隔将在额外的时间后返回,例如5秒
您可以使用 switchMap 运算符。只要有新的点击,它就会完成 interval observable 并开始一个新的 interval observable。
const refreshClick$ = Observable.fromEvent(this.btn,
'click').startWith('click');
const interval$ = Observable.interval(5000);
refreshClick$.switchMap(()=>interval$)
.subscribe(x=>console.log(x));
我有两个可观察对象
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 方法将正常执行,但间隔将在额外的时间后返回,例如5秒
您可以使用 switchMap 运算符。只要有新的点击,它就会完成 interval observable 并开始一个新的 interval observable。
const refreshClick$ = Observable.fromEvent(this.btn,
'click').startWith('click');
const interval$ = Observable.interval(5000);
refreshClick$.switchMap(()=>interval$)
.subscribe(x=>console.log(x));