每 5 分钟调用一个可观察的 API AngularV6+ .ts 文件
Call an observable API each 5 minutes AngularV6+ .ts file
我想在 angular .ts
文件中每 5 分钟调用一个 Observable
方法(调用和外部 API)。
比如我有这样一个方法:
updateMasterTokenAsync(): Observable<boolean> {
const httpHeaders = new HttpHeaders();
httpHeaders.append('Content-Type', 'application/json');
return this.http.post<any>(
this.API_URL + this.API_ENDPOINT_LOGIN,
{'username': 'test', 'password': 'test'},
{headers: httpHeaders}
).pipe(
tap(res => localStorage.setItem('accessToken', res['token'])),
map(
res => true,
error => false
)
);
}
我希望每 5 分钟调用一次此方法。我使用了 setInterval
解决方案,但它无法正常工作。它会调用我的方法,但 http.post
部分运行不正常。有谁能够帮助我?
提前致谢
你需要订阅 observables 才能工作,这里不需要使用 setInterval,因为 rxjs 带有 invterval 和 timer observable..
timer(0, 300000).pipe(
switchMapTo(this.updateMasterTokenAsync())
).subscribe(
result => console.log(result),
err => console.log(err)
)
只要您在销毁组件或服务时取消订阅即可。
这将立即开始,如果您希望第一个呼叫等待 5 分钟,请使用 interval()
我想在 angular .ts
文件中每 5 分钟调用一个 Observable
方法(调用和外部 API)。
比如我有这样一个方法:
updateMasterTokenAsync(): Observable<boolean> {
const httpHeaders = new HttpHeaders();
httpHeaders.append('Content-Type', 'application/json');
return this.http.post<any>(
this.API_URL + this.API_ENDPOINT_LOGIN,
{'username': 'test', 'password': 'test'},
{headers: httpHeaders}
).pipe(
tap(res => localStorage.setItem('accessToken', res['token'])),
map(
res => true,
error => false
)
);
}
我希望每 5 分钟调用一次此方法。我使用了 setInterval
解决方案,但它无法正常工作。它会调用我的方法,但 http.post
部分运行不正常。有谁能够帮助我?
提前致谢
你需要订阅 observables 才能工作,这里不需要使用 setInterval,因为 rxjs 带有 invterval 和 timer observable..
timer(0, 300000).pipe(
switchMapTo(this.updateMasterTokenAsync())
).subscribe(
result => console.log(result),
err => console.log(err)
)
只要您在销毁组件或服务时取消订阅即可。
这将立即开始,如果您希望第一个呼叫等待 5 分钟,请使用 interval()