作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
使用 Angular 7 如何立即和每 X 秒调用一次函数?这是我在服务中的功能:(仅作为示例)
checkData(): Observable<string> {
return this.http.get('')
.pipe(
map(res => {
let result;
result = {
packageNumber: this.packageNumber,
};
return result;
})
);
}
在我的组件中我尝试了这样的事情:
private killTrigger: Subject<void> = new Subject();
private fetchData$: Observable<string> = this.packageService.checkData();
private refreshInterval$: Observable<string> = timer(0, 1000)
.pipe(
takeUntil(this.killTrigger),
switchMap(() => this.fetchData$),
catchError(error => of('Error'))
);
如何让它发挥作用?
最佳答案
您需要订阅它才能启动它。最好的方法是:
// class def
private subscription: Subscription;
// in NgOnInit
this.subscription = this.refreshInterval$.subscribe(noop)
// in NgOnDestroy
this.subscription.unsubscribe(); // avoid memory leaks
要真正触发您的 fetchData$
,您可以通过以下方式替换 switchMap
调用:
map(() => this.fetchData$.subscribe(noop),
如果您不订阅可观察对象,它就永远不会被触发。不明白为什么在这里需要 switchMap
。
关于angular - 立即调用函数并每隔 X 秒调用一次函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53156450/
我是一名优秀的程序员,十分优秀!