如果我有一个像这样的数组数组
{
parent: [
{
name: 'stu',
children: [
{name: 'bob'},
{name: 'sarah'}
]
},
{
...
}
]
}
我想循环遍历每个父级并依次循环遍历它们的子级,这样我就不会启动下一个父级,直到所有子级都已处理完毕(一些漫长的异步过程),我该如何使用 RxJS 来做到这一点?
我已经尝试过这样做:
var doChildren = function (parent) {
console.log('process parent', parent.name);
rx.Observable.fromArray(parent.children)
.subscribe(function (child) {
console.log('process child', child.name);
// do some Asynchronous stuff in here
});
};
rx.Observable.fromArray(parents)
.subscribe(doChildren);
但我让所有家长退出,然后是所有孩子。
concatMap
在这里效果更好。因为如果迭代子项是异步的,子项的顺序就会混乱。concatMap
可以确保一次完成一位父母。
Rx.Observable.from(parents)
.concatMap(function (p) {
return Rx.Observable.from(p.children)
})
.subscribe();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)