NGRX与效果序列有关的api调用

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

我目前正在使用NGRX开发Angular应用程序的功能,在该功能中,调度了一个操作以使用Id获取某些数据;然后使用第一个服务调用中的响应对象,发出第二个请求,以从其他端点提取更多详细信息。一切完成后,数据/动作可以继续进行。

问题:我正在寻找一种在单一效果中执行上述动作的方法,而没有链接效果/动作,因为那样会导致渲染的组件不完整。

我看过一些使用forkJoin的示例,但不确定是否适用,因为它们不是并行调用而是已排序。

代码是这样的:

    this.actions$.pipe(
      ofType(fetchAllData),
      switchMap(action => {
        const one = this.api.getById(serviceUrl, action.Id);
        return one.pipe(
          switchMap((data) => {
            cons two = this.api.getMoreDetail(serviceUrl, two.id)
            return fetchDataActions(data, []);
          })
        );
      })
    )
  );  

因此理想情况下,数据将包含我需要的一切,并准备填充我的组件。

注意:-上面的代码不起作用-必须按顺序进行通话,因为通话1的响应将用作通话2的参数-进行顺序调度的动作将不起作用,因为呈现时组件数据不完整。

angular ngrx effects
1个回答
2
投票

[C0之后,您可以添加第二个映射运算符以发出第二个请求。

我正在寻找一种在单一效果中执行上述动作的方法,而没有链接效果/动作,因为那样会导致渲染的组件不完整

这是不正确的,如果一个效果没有分派由reducer处理并导致状态改变的动作,则该组件将不会重新渲染。如果状态会改变,它只会重新显示。

请参见下面的文章,其中解释了一些效果模式:switchMap

© www.soinside.com 2019 - 2024. All rights reserved.