@effects内嵌套的http调用

时间:2017-09-12 16:04:56

标签: angular ngrx ngrx-store ngrx-effects

我和angular2应用程序一起运行ngrx store,其中包含处理http请求的效果。适用于简单直接的简单http请求:REQUEST - > SUCCESS / FAIL操作结束修改我的商店状态。

我现在要做的是先拨打一个电话,这将给我一系列人员,对于每个返回的人,我需要进行一次http调用以从中获取一些额外的数据。

我想要实现的是获取人员,在我获得人员后立即获取额外数据,然后使用完整数据触发“成功”操作。

这是简单的人请求的原始效果。工作正常:

1.0.0.RELEASE

这是我尝试为我收到的每个经理做一个http请求。使用forkJoin并行执行“详细信息”调用我从第一次调用获得的n个管理器。

  • 对于第二次通话,我使用了toPromise()http call
  • forkJoin从触发的所有调用中获取结果

在返回行@Effect() requestManagers = this.action$ .ofType(ContributionActions.FETCH_MANAGERS_REQUEST) .map(toPayload) .switchMap(payload => this.contributionsService.requestManagers() .map(res => this.contributionActions.fetchManagersReceive(res.json())) .catch(err => this.errorHandler.handleError(err, 'There was an error retrieving your managers', this.contributionActions.fetchManagersFailed()) ) ); 之前我可以打印变量“管理器”,并使用原始数据和“详细信息”调用中的额外数据对其进行格式化,以便按预期工作。

但是在发送“接收”操作return this.contributionActions.fetchManagersReceive(managers);时,我收到以下错误:

this.contributionActions.fetchManagersReceive(managers);

这是我到目前为止试图获得预期结果的方法,任何关于如何使这项工作的想法都将受到赞赏。

我还想知道是否有更好的方法来获得我想要的相同结果,因为我很确定有更高效和漂亮的方法来做同样的事情。

提前致谢。

0 个答案:

没有答案