Angular Rx JS, повтор HTTP-запроса - PullRequest
0 голосов
/ 03 мая 2020

Я ищу способ воспроизвести мой запрос http / get по запросу, например, после публикации, чтобы обновить мои данные с сервера. Я смотрел на операторы повтора или расширения, но не уверен, что это правильный путь. Что такое рекомендуемый шаблон?

const url = 'https://jsonplaceholder.typicode.com/todos/';
const data$ = this.http.get<Todo[]>(url);
data$.subscribe(console.log);
// wait 5 sec for instance, then replay the http get again and get data$ updated

Спасибо!

Ответы [ 2 ]

1 голос
/ 03 мая 2020

Вы можете использовать timer для отправки события каждые 5 секунд, а затем использовать отображение более высокого порядка, например switchMap, для запроса данных.

const url = 'https://jsonplaceholder.typicode.com/todos/';
const data$ = this.http.get<Todo[]>(url);
const dataWithTimer$ = timer(0, 5000).pipe(switchMap(() => data$))
dataWithTimer$.subscribe(console.log);
0 голосов
/ 03 мая 2020

Благодаря ответу Ясира я, наконец, go смогу:

const url = 'https://jsonplaceholder.typicode.com/todos/';
const webData$ = this.http.get<Todo[]>(url);
const force$ = new BehaviorSubject<boolean>(true);
const forcedData$ = force$.pipe(switchMap((b) => webData$));
forcedData$.subscribe(console.log);
setTimeout(() => force$.next(true), 5000);

Я могу использовать принудительное обновление вручную, затем

...