如果源 Observable 发射任何项目,DefaultIfEmpty 操作符将完全镜像源 Observable。如果源 Observable 正常终止(使用 onComplete)而没有发射任何项目,则从 DefaultIfEmpty 返回的 Observable 将改为在它也完成之前发射你选择的默认项目。
待定
待定
RxGroovy 将此操作符实现为 defaultIfEmpty。
此操作符默认情况下不会对任何特定的 调度器 进行操作。
defaultIfEmpty(T)RxGroovy 1.1 中还有一个名为 switchIfEmpty 的新操作符,它不是在源 Observable 终止而没有发射任何项目时发射备用值,而是发射备用Observable 的发射。
RxJava 将此操作符实现为 defaultIfEmpty。
此操作符默认情况下不会对任何特定的 调度器 进行操作。
defaultIfEmpty(T)RxJava 1.1 中还有一个名为 switchIfEmpty 的新操作符,它不是在源 Observable 终止而没有发射任何项目时发射备用值,而是发射备用Observable 的发射。
Observable.empty().defaultIfEmpty(10).subscribe(
val -> System.out.println("next: " + val),
err -> System.err.println(err) ,
() -> System.out.println("completed")
); next: 10 completed
RxJava 将此操作符实现为 defaultIfEmpty。
此操作符默认情况下不会对任何特定的 调度器 进行操作。
defaultIfEmpty(T)Flowable.empty().defaultIfEmpty(10).subscribe(
val -> System.out.println("next: " + val),
err -> System.err.println(err) ,
() -> System.out.println("completed")
); next: 10 completed
RxJS 实现 defaultIfEmpty,但设置默认值的参数是可选的。如果你没有传递这个默认值,defaultIfEmpty 将发射一个“null”,如果源 Observable 完成而没有发射任何东西。(请注意,发射一个“null”与没有发射是不一样的。)
/* Without a default value */
var source = Rx.Observable.empty().defaultIfEmpty();
var subscription = source.subscribe(
function (x) { console.log('Next: ' + x.toString()); },
function (err) { console.log('Error: ' + err); },
function () { console.log('Completed'); });Next: null Completed
/* With a defaultValue */
var source = Rx.Observable.empty().defaultIfEmpty(false);
var subscription = source.subscribe(
function (x) { console.log('Next: ' + x.toString()); },
function (err) { console.log('Error: ' + err); },
function () { console.log('Completed'); });Next: false Completed
defaultIfEmpty 在以下每个发行版中都可以找到
rx.jsrx.all.jsrx.all.compat.jsrx.compat.jsrx.lite.jsrx.lite.compat.jsRxPHP 将此操作符实现为 defaultIfEmpty。
如果序列为空,则返回 Observable 的指定值。
//from https://github.com/ReactiveX/RxPHP/blob/master/demo/defaultIfEmpty/defaultIfEmpty.php
$source = \Rx\Observable::empty()->defaultIfEmpty(Rx\Observable::of('something'));
$subscription = $source->subscribe($stdoutObserver);
Next value: something
Complete!