【发布时间】:2018-01-16 13:57:43
【问题描述】:
我正在使用 RxJS 与数据库进行通信,并且我正在尝试发送复杂的复合对象。我们的 API 允许我们一次注入一个元素(即 POST 不会处理正文中的数组)
考虑以下对象,其中 mainField 和 subFields 将是 DB 中的单独表实体:
OBJ = {
'mainField': 'Main content'
'subFields': [ 'obj1','obj2','obj3' ]
}
要求是:
-
mainField必须首先传输,响应对象将提供参考 ID,subFields将使用该 ID -
subFields的每个元素都必须作为单个元素传输,当响应到达时,可以请求另一个元素
对我来说,概念上的过程看起来像这样(send 函数是一种简化,它接受任何东西并返回这种类型的 observable):
send(OBJ.mainField) /* This will return Observable of mainField */
.flatMap(res => {
OBJ.subFields.forEach(sub => {
sub.id = res.id
})
Obervable.of(OBJ.subFields)
})
.flatMap(subField => {
send(subField )
})
我相信有更好的方法来做到这一点(即分离数组,发出一系列可观察对象并等待它们按顺序完成,然后继续)。如有任何建议,我将不胜感激
【问题讨论】: