我正在寻找一些建议,以便最好地履行这一要求:
我需要调用3个或4个单独的API /端点来将用户添加到我们的系统中(使用表单)。
我已经阅读了一些有关多顺序请求的问题:Multiple Sequential API calls in Angular 4
但是我想知道如何使调用集合像事务一样执行,所以如果任何步骤失败(例如步骤2中的电子邮件正则表达式)我可以管理错误并跟踪步骤I' m所以我可以从那里继续而不是重新开始。
我认为我联系到的答案和localStorage的组合 - 是否有更好的解决方案?
由于
答案 0 :(得分:3)
一般来说,这可以通过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
中的任何一个发出错误,它将被进一步传播,并且将跳过所有后续步骤。链也将处置,这就是我在retry()
subscribe().
的原因
您也可以使用catch
运算符,但这实际上取决于您希望实现的行为。