一次与多个观察者打交道

时间:2019-11-21 07:17:10

标签: angular asynchronous observable

我对Angle不熟悉,我正在开发一个执行以下操作的项目:

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

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

1 个答案:

答案 0 :(得分:6)

您需要链接可观察对象,如下所示:


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运算符的更多信息,当您将其缠绕在头上时,它是一个非常强大的工具。