DefaultIfEmpty

從來源 Observable 發射項目,如果來源 Observable 沒有發射任何項目,則發射預設項目

DefaultIfEmpty

如果來源 Observable 發射任何項目,DefaultIfEmpty 操作符會完全鏡像來源 Observable。 如果來源 Observable 在沒有發射任何項目的情況下正常終止(使用 onComplete),則從 DefaultIfEmpty 返回的 Observable 將會在完成之前發射您選擇的預設項目。

另請參閱

特定語言資訊

待定

待定

defaultIfEmpty

RxGroovy 將此操作符實作為 defaultIfEmpty

此操作符預設不會在任何特定的 Scheduler 上運作。

在 RxGroovy 1.1 中還有一個新的操作符叫做 switchIfEmpty,它不是在來源 Observable 在沒有發射任何項目就終止時發射備份「值」,而是發射來自備份「Observable」的發射。

defaultIfEmpty

RxJava 將此操作符實作為 defaultIfEmpty

此操作符預設不會在任何特定的 Scheduler 上運作。

在 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

此操作符預設不會在任何特定的 Scheduler 上運作。

範例程式碼

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,但設定預設值的參數是可選的。 如果您不傳遞此預設值,如果來源 Observable 在沒有發射任何東西的情況下完成,defaultIfEmpty 將會發射一個 “null”。 (請注意,發射一個 “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!