【发布时间】:2019-05-02 19:02:13
【问题描述】:
我一直在网上寻找解决方案,但找不到任何适合我的用户案例的解决方案。我正在使用 MEAN 堆栈(Angular 6)并且我有一个注册表单。我正在寻找一种方法来执行对 API 的多个 HTTP 调用,每个调用都依赖于前一个返回的结果。我需要看起来像这样的东西:
firstPOSTCallToAPI('url', data).pipe(
result1 => secondPOSTCallToAPI('url', result1)
result2 => thirdPOSTCallToAPI('url', result2)
result3 => fourthPOSTCallToAPI('url', result3)
....
).subscribe(
success => { /* display success msg */ },
errorData => { /* display error msg */ }
);
我需要使用哪种 RxJS 运算符组合来实现这一点?一种可能的解决方案是嵌套多个订阅,但我想避免这种情况并使用 RxJS 做得更好。还需要考虑错误处理。
【问题讨论】:
-
是否定义了可观察的数量?还是代码必须是动态的?
-
你可以使用 flatMap 或 switchMap
-
rguerin,我想灵活一点,不依赖于可观察对象的确切数量。 @JEY我尝试使用switchMap,但我收到一条错误消息“预期1-2个参数,但得到3个”。可以举个例子吗?
标签: angular typescript rxjs angular-httpclient rxjs6