DefaultIfEmpty

从源 Observable 中发射项目,或者如果源 Observable 没有发射任何项目,则发射一个默认项目。

DefaultIfEmpty

如果源 Observable 发射任何项目,DefaultIfEmpty 操作符将完全镜像源 Observable。如果源 Observable 正常终止(使用 onComplete)而没有发射任何项目,则从 DefaultIfEmpty 返回的 Observable 将改为在它也完成之前发射你选择的默认项目。

另请参阅

特定语言的信息

待定

待定

defaultIfEmpty

RxGroovy 将此操作符实现为 defaultIfEmpty

此操作符默认情况下不会对任何特定的 调度器 进行操作。

RxGroovy 1.1 中还有一个名为 switchIfEmpty 的新操作符,它不是在源 Observable 终止而没有发射任何项目时发射备用,而是发射备用Observable 的发射。

defaultIfEmpty

RxJava 将此操作符实现为 defaultIfEmpty

此操作符默认情况下不会对任何特定的 调度器 进行操作。

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 
defaultIfEmpty

RxJava 将此操作符实现为 defaultIfEmpty

此操作符默认情况下不会对任何特定的 调度器 进行操作。

示例代码

Flowable.empty().defaultIfEmpty(10).subscribe(
    val -> System.out.println("next: " + val),
    err -> System.err.println(err) ,
    () -> System.out.println("completed")
); 
next: 10
completed 
defaultIfEmpty

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.js
  • rx.all.js
  • rx.all.compat.js
  • rx.compat.js
  • rx.lite.js
  • rx.lite.compat.js

RxPHP 将此操作符实现为 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!