如何使用 RxJS 在 Angular 6 中发出一系列 http 请求

2024-01-23

我一直在网上寻找解决方案,但找不到任何适合我的用户案例的解决方案。我正在使用 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(使用前将#替换为@)

如何使用 RxJS 在 Angular 6 中发出一系列 http 请求 的相关文章

随机推荐