Angular: выполнение задания при загрузке http-данных с использованием HttpClient, Observable и async pipe - PullRequest
0 голосов
/ 25 мая 2019

Я использую HttpClient в угловом приложении 6 для загрузки данных. Мне нужно сделать дополнительную работу, когда данные успешно загружены. Если я использую функцию подписки, я легко могу сделать это внутри подписки как:

http.get("/addressOfService").subscribe(data=>{
   this.info =data;
   DoJob();
});

Но я знаю, что для загрузки данных и их использования в представлении рекомендуется использовать асинхронный канал как можно дольше, поэтому я использую его. Теперь мой вопрос заключается в том, как лучше всего запускать функцию при загрузке данных и использовании асинхронного канала. Я пробовал другое решение и обнаружил, что могу использовать функцию карты, например:

http.get("/addressOfService").pipe(map(data=>{
   DoJob();
   return data;
}));

Но я не уверен, что это хорошая практика.

1 Ответ

4 голосов
/ 25 мая 2019

вы должны использовать нажмите вместо того, чтобы выполнять побочные эффекты, потому что map применяет функцию для изменения каждого испускаемого элемента, и это не ваш случай здесь

getData() {
 this.isLoading = true;
 http.get("/addressOfService").pipe(tap(_ => {
    DoJob();
    this.isLoading = false; // in case of success hide loading spinner
 }));
}
...