每 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()