多个角订阅。

问题描述 投票:0回答:2

嘿,我该如何使用正确的合计最终值来“做”?

let total: number = 0;
for (let articleId in items) {
  this.articleService.getArticleById(articleId).subscribe((article: Articles[]) => {//Async  
    total = totale + article.price;
  })
}
doSometihg(total);

谢谢大家

angular asynchronous subscribe
2个回答
3
投票

使用fork join并行运行所有异步调用,然后等待它们完成。

当文章返回时,您可以获取总数并继续进行处理。

forkJoin(
  items.map(articleId => this.articleService.getArticleById(articleId))
).subscribe((articles: Article[]) => {
  const total: number = articles
    .reduce((cumulative, article) => cumulative + article.price, 0);
  doSomething(total);
});

0
投票
import { forkJoin } from 'rxjs/observable/forkJoin';
const allObs = forkJoin(...children.map(r => r.validate()));
allObs.subscribe(res => console.log(res)); // Do what you want with the array of results
© www.soinside.com 2019 - 2024. All rights reserved.