在RxJS中有条件地选择observable

Conditionally choose observable in RxJS

本文关键字:选择 observable 有条件 RxJS      更新时间:2023-09-26

我想知道如何创建一个新的可观察对象,它将根据第一个可观察对象是否为空返回另外两个可观察对象之一(默认情况下不调用第二个可观察对象)。如:

// scenario 1
let obs1 = Observable.empty();
let obs2 = Observable.of([1,2,3]);
// This line doesn't work, but is essentially what I'm attempting to do
let obs3 = (obs1.isEmpty()) ? obs2 : obs1;
obs3.subscribe( i => console.log('Next: ', i));
// Next: 1
// Next: 2
// Next: 3
// Complete
// scenario 2
let obs1 = Observable.of([6,7,8]);
let obs2 = Observable.of([1,2,3]);
// This line doesn't work, but is essentially what I'm attempting to do
let obs3 = (obs1.isEmpty()) ? obs2 : obs1;
obs3.subscribe( i => console.log('Next: ', i));
// Next: 6
// Next: 7
// Next: 8
// Complete

你可以试试:

let obs3 = obs1.isEmpty().map(x => x? obs2 : obs1;)

我马上检查一下是否可以。

是的,根据文档,它应该是好的,因为isEmpty发出一个布尔值,如果可观察对象是空的是真,所以你可以使用它来挑选你想要的可观察对象