繁体   English   中英

具有状态管理的角度4中的顺序(事务)API调用

[英]Sequential (transactional) API calls in angular 4 with state management

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

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

  • 第一次调用将添加一个用户帐户并返回一个ID。
  • 第二个使用先前的ID从另一个端点创建联系人记录
  • 然后,根据前面的步骤,可能会有一个或两个以上的调用来创建其他业务域记录。

我已经阅读了有关多顺序请求的一些问题: Angular 4中的多个顺序API调用

但是我想知道如何使呼叫集合像事务一样执行,因此如果任何步骤失败(例如,步骤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()的原因subscribe().

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM