Я пытаюсь показать индикатор выполнения для нескольких запросов, выполненных в приложении Angular.Я получил несколько запросов для работы без индикатора выполнения с помощью forkJoin, короче говоря, вот как я сделал:
ArticleService
getArticles(articleIds: Array<string>) : Observable<any[]> {
let apiCalls = [];
articleIds.forEach(articleId => {
apiCalls.push(this.http.get(this.uri + '/article/' + articleId));
});
return forkJoin(apiCalls);
}
Компонент
let articleIds = ['234234', '2343334', '2354345'];
this.articleService.getArticles(articleIds).subscribe(response => {
response.forEach(responseObj => {
// Do stuff
});
});
Но теперь я хочу сделать что-то вроде этого примера: https://www.learnrxjs.io/recipes/progressbar.html
Но я не уверен, как настроить его в моем конкретном случае, я пробовал это:
ArticleService
getArticles(articleIds: Array<string>) : Observable<any[]> {
let apiCalls = [];
articleIds.forEach(articleId => {
apiCalls.push(this.http.get(this.uri + '/article/' + articleId));
});
return from(apiCalls).pipe(concatAll());
}
Но не уверен, как настроить его в компоненте для обработки обновления прогресса, предпочтительно что-то, что увеличивает переменную "this.progress" при каждом выполненном запросе.
Anyoneесть какие-нибудь идеи или указатели о том, как это сделать?Должен ли я использовать «switchMapTo» и где я должен иметь это, в службе или компоненте?Есть ли другой лучший способ справиться с этим, могу ли я нажать на forkJoin, чтобы получать события по каждому завершенному запросу для увеличения индикатора выполнения?