Используйте fork join для параллельного запуска всех асинхронных вызовов c и ожидания их завершения.
Когда статьи вернутся, вы можете получить общее количество и продолжить обработку.
forkJoin(
items.map(articleId => this.articleService.getArticleById(articleId))
).subscribe((articles: Article[]) => {
const total: number = articles
.reduce((cumulative, article) => cumulative + article.price, 0);
doSomething(total);
});