gpt4 book ai didi

angular - 立即调用函数并每隔 X 秒调用一次函数

转载 作者:搜寻专家 更新时间:2023-10-30 21:57:08 25 4
gpt4 key购买 nike

使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com