我对RxJ还是很陌生,所以请多多包涵。
我有一个可观察到的对象,它在更改时会发出JSON文档
该文档包含电子邮件地址列表
这些电子邮件地址中的每一个都有与之相关的个人资料,我可以通过可观察的方式对其进行查找
我想结束,当原始文档中的电子邮件地址列表发生更改时,它会发出一组配置文件。
我尝试将switchMap()
与combineLatest()
结合使用,但是当电子邮件地址列表为空时,该方法不起作用。作为修复,我引入了对此的检查,然后返回of([])
。
documentObservable.pipe(
filter(document =>{
return hasEmailListChanged(document.emails);
}),
switchMap(document => {
if (!document.emails.length) {
return of([]);
}
const profileObservables = [];
for (let i = 0; i < document.emails.length; i++) {
profileObservables[i] = getProfile(document.emails[i])
}
return combineLatest(profileObservables);
})
);
这很好,直到我有多个订阅者可观察。然后,当列表为空时,它突然仅通知第一个订户。我认为这是因为of([])
在发出空数组后完成。
另外,我认为在文档可观察的内部创建多个可观察的对象是不好的,最好改用combineAll()
之类的东西。
任何帮助深表感谢!