gpt4 book ai didi

javascript - 具有状态管理的 Angular 4 中的顺序(事务性)API 调用

转载 作者:搜寻专家 更新时间:2023-10-30 21:29:00 24 4
gpt4 key购买 nike

我正在寻找一些建议以最好地执行此要求:

我需要调用 3 或 4 个单独的 API/端点来将用户添加到我们的系统(使用表单)。

  • 第一个调用添加一个用户帐户并返回一个 ID。
  • 第二个使用不同的端点创建联系人记录以前的ID
  • 然后可能会有一两次电话来创建其他业务基于前面步骤的域名记录。

我已经阅读了一些关于多顺序请求的问题:Multiple Sequential API calls in Angular 4

但我想知道如何使调用集合像事务一样执行,因此如果任何步骤失败(例如,步骤 2 中的电子邮件正则表达式),我可以管理错误并跟踪我正在进行的步骤我可以从那里继续,而不是重新开始。

我考虑了我链接到的答案和 localStorage 的组合 - 有更好的解决方案吗?

谢谢

最佳答案

一般来说,这可以通过 concatMapdomerge 运算符来实现:

this.formSubmit$
.concatMap(formData => this.http.post(...).map(user => user.id))
.do(id => /* save id here */)
.merge(this.recoverWithId$) // continue from here if you already have an id

.concatMap(id => this.http.post(...))
.do(id => /* save whatever you need here */)
.merge(this.recoverWithWhatever$) // continue from here if already have whatever

...
.retry()
.subscribe()

如果 this.http.post 中的任何一个发出错误,它将被进一步传播,所有后续步骤都将被跳过。链也会处理,这就是为什么我在 subscribe() 之前使用 retry() 的原因。

您也可以使用 catch 运算符,但这实际上取决于您想要实现的行为。

关于javascript - 具有状态管理的 Angular 4 中的顺序(事务性)API 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46601610/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com