Вызывайте наблюдаемый API каждые 5 минут файл AngularV6 + .ts - PullRequest
0 голосов
/ 18 января 2020

Я хочу вызывать метод Observable (который вызывает и внешний API) каждые 5 минут в файле angular .ts.

Например, у меня есть такой метод:

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 не работает. Кто-нибудь может мне помочь? заранее спасибо

1 Ответ

3 голосов
/ 18 января 2020

вам нужно подписаться на наблюдаемые, чтобы они работали, и нет необходимости использовать setInterval здесь, так как rx js поставляется с invterval и наблюдаемым таймером.

timer(0, 300000).pipe(
   switchMapTo(this.updateMasterTokenAsync())
).subscribe(
  result => console.log(result),
  err => console.log(err)
)

просто отписывайтесь от этого всякий раз, когда вы уничтожаете компонент или услугу.

это начнется сразу же, если вы хотите, чтобы первый звонок ожидал 5 минут, затем используйте interval()

...