我试图每 10 秒调用一次服务,但也想仅在第一次发射时执行一些代码,这里的问题是第一个条目是重复的,代码如下:
ionViewWillEnter() {
this.isLoading = true;
const Obs = timer(0, 10000).pipe(
switchMap(() => {
return this.serviceName.someFunc();
})
);
this.timerSub = Obs.subscribe();
this.timerSub = Obs.pipe(first()).subscribe(() => {
this.isLoading = false;
});
}
我还注意到另一个问题,即即使我在离开页面时取消订阅,该服务仍然每 10 秒调用一次,任何帮助都会受到赞赏。
更新
我找到了一个解决方案,但它更多的是一种解决方法,基本上我所做的是在订阅上设置 setTimeout :
this.timerSub = Obs.pipe(first()).subscribe(() => {
this.isLoading = false;
});
setTimeout(() => {
this.timerSub = Obs.subscribe();
}, 10000);
显然,取消订阅问题也得到了解决,尽管我希望得到一些更优雅的解决方案的反馈,提前致谢。
叮当猫咪
摇曳的蔷薇
相关分类