Мне нужны данные из двух источников для объединения в один res: {data1: any, data2: any}
объект, и мне нужно добиться этого , даже если один из источников не излучает никаких значений
Вотструктура, которую я ожидаю:
xxx (
source1,
source2,
(data1, data2) => ({data1: data1, data2: data2})
).subscribe(res => {
doSomething1(res.data1)
doSomething2(res.data2)
})
Есть ли какие-либо операторы rxjs, которые могут это сделать?
В настоящее время я могу решить эту проблему с помощью комбинации startWith
и combineLatest
- я выдаю нулевое значение, такcombineLatest
может начать излучать значения - любой лучший способ решить эту проблему без startWith(null)
?
combineLatest (
source1.pipe(startWith(null)),
source2.pipe(startWith(null)),
(data1, data2) => ({data1: data1, data2: data2})
).subscribe(res => {
if(res.data1) {
doSomething1(res.data1)
}
if(res.data2) {
doSomething2(res.data2)
}
})