【问题标题】:How to call one service after another service sucess condition in Rxjs Angular如何在 Rxjs Angular 中的另一个服务成功条件后调用一个服务
【发布时间】:2022-02-25 00:03:58
【问题描述】:

如何在另一个成功调用后调用一个服务。喜欢

this.data.getUser().subscribe((res: any) => {
  if (res.id === 1) {
    this.data.getTask().subscribe((da: any)=> {
      console.log('task', da);
    });
  }
});

我们能否使用 Rxjs 运算符编写更好的代码方式?

提前致谢

【问题讨论】:

标签: angular rxjs


【解决方案1】:

您可以使用过滤器运算符,仅在收到res.id === 1 时过滤响应。

然后您可以使用任何map 运算符,例如switchMapconcatMap 等。

我使用了switchMap,它会在新事件到来时取消正在进行的请求/流。 要在单个 Observable 上使用多个运算符,我们可以使用 pipe 运算符来合并它们。

this.data.getUser().pipe(
         filter((res: any) => res.id === 1),
         switchMap((res: any) => {
            return this.data.getTask();
         })
        ).subscribe(da => {
         console.log('task', da);
       });

【讨论】:

  • 感谢您的回复,我们收到的是用户的回复,而不是任务一。
  • 您给出的示例,使用用户的响应res.id === 1 发送另一个请求。正确的?。我用它来过滤结果,然后得到任务响应。
猜你喜欢
  • 2018-01-25
  • 2019-10-23
  • 1970-01-01
  • 1970-01-01
  • 2017-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多