一次与多个观察者打交道

use*_*335 0 asynchronous observable angular

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

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

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

wat*_*lea 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);
});
Run Code Online (Sandbox Code Playgroud)

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

请记住,这是一个盲目的答复,可能还有更多情况需要处理,例如错误处理(我只是使用上面的过滤器跳过了空结果)。您应该真正阅读有关RxJs运算符的更多信息,一旦您将其放在头上,它便是一个非常强大的工具。