[英]Sequential (transactional) API calls in angular 4 with state management
我正在寻找一些建议,以最好地执行此要求:
我需要调用3或4个单独的API /端点,以将用户添加到我们的系统中(使用表单)。
我已经阅读了有关多顺序请求的一些问题: Angular 4中的多个顺序API调用
但是我想知道如何使呼叫集合像事务一样执行,因此如果任何步骤失败(例如,步骤2中的电子邮件正则表达式),我都可以管理错误并跟踪正在进行的步骤,以便继续从那里开始,而不是从头开始。
我考虑了链接到的答案和localStorage的组合-是否有更好的解决方案?
谢谢
通常,这可以使用concatMap
, do
和merge
运算符实现:
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.