首页 > 解决方案 > 一次处理多个观察者的角度

问题描述

我是 Angular 的新手,我正在开发一个执行以下操作的项目:

  1. 读取文件并将数据保存在数组中。
  2. 对于数组中的每个元素,它将连接到数据库并检查这些元素的信息。
  3. 对于那些存在于数据库中的元素,它们的信息将被写入文件。

如上所述,我有三个需要使用观察者的异步调用。问题是我不知道如何将数据从一个观察者提供给另一个观察者以及如何处理这个问题。我尝试使用回调,但它返回它为多次调用和多次返回创建了更多问题。谁能告诉我如何处理这种情况?!

标签: angularasynchronousobservable

解决方案


你需要链接你的 observables,像这样:


this.readFileObservable.pipe(
  map(fileData => this.convertToArray(fileData)),
  switchMap(array => {
    const observables = array.map(element => this.createDBCallObservable(element));

    return merge(...observables);
  }),
  filter(singleResult => !!singleResult),
).subscribe(singleResult => {
  this.writeToAFile(singleResult);
});

在 Stackblitz 上查看此操作: https ://stackblitz.com/edit/angular-6zfwdo

请记住,这是一个盲目的回复,可能还有更多的情况需要处理,比如错误处理(我只是跳过上面带有过滤器的空结果)。你真的应该阅读更多关于 RxJs 操作符的内容,一旦你了解它,它就是一个非常强大的工具。


推荐阅读