我一直在网上寻找解决方案,但找不到任何适合我的用户案例的解决方案。我正在使用 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 做得更好。还需要考虑错误处理。
对于依赖于先前结果的调用,您应该使用concatMap
firstPOSTCallToAPI('url', data).pipe(
concatMap(result1 => secondPOSTCallToAPI('url', result1))
concatMap( result2 => thirdPOSTCallToAPI('url', result2))
concatMap(result3 => fourthPOSTCallToAPI('url', result3))
....
).subscribe(
success => { /* display success msg */ },
errorData => { /* display error msg */ }
);
如果您的异步方法不依赖于先前异步调用的返回值,您可以使用
concat(method(),method2(),method3()).subscribe(console.log)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)