Empty

建立一個不發射任何項目但正常終止的 Observable

Empty

Never

建立一個不發射任何項目且不終止的 Observable

Never

Throw

建立一個不發射任何項目並以錯誤終止的 Observable

Throw

EmptyNeverThrow 操作符產生具有非常特定且有限行為的 Observables。這些對於測試目的很有用,有時也用於與其他 Observables 組合,或作為期望其他 Observables 作為參數的操作符的參數。

另請參閱

特定於語言的資訊

RxGroovy 將這些操作符實現為 emptynevererrorerror 操作符將您希望 Observable 終止的 Throwable 作為參數。

這些操作符預設不在任何特定的 Scheduler 上運行,但是 emptyerror 可選擇地將 Scheduler 作為參數,如果您傳遞給它們一個 Scheduler,它們將在該 Scheduler 上發出終止通知。

範例程式碼

println("*** empty() ***");
Observable.empty().subscribe(
  { println("empty: " + it); },                      // onNext
  { println("empty: error - " + it.getMessage()); }, // onError
  { println("empty: Sequence complete"); }           // onCompleted
);

println("*** error() ***");
Observable.error(new Throwable("badness")).subscribe(
  { println("error: " + it); },                      // onNext
  { println("error: error - " + it.getMessage()); }, // onError
  { println("error: Sequence complete"); }           // onCompleted
);

println("*** never() ***");
Observable.never().subscribe(
  { println("never: " + it); },                      // onNext
  { println("never: error - " + it.getMessage()); }, // onError
  { println("never: Sequence complete"); }           // onCompleted
);
println("*** END ***");
*** empty() ***
empty: Sequence complete
*** error() ***
error: error - badness
*** never() ***
*** END ***

RxJava 1.x 將這些操作符實現為 emptynevererrorerror 操作符將您希望 Observable 終止的 Throwable 作為參數。

這些操作符預設不在任何特定的 Scheduler 上運行,但是 emptyerror 可選擇地將 Scheduler 作為參數,如果您傳遞給它們一個 Scheduler,它們將在該 Scheduler 上發出終止通知。

RxJava 2.x 將這些操作符實現為 emptynevererrorerror 操作符將您希望 Observable 終止的 Throwable 作為參數,或返回此類 ThrowableCallable 作為參數。

這些操作符預設不在任何特定的 Scheduler 上運行。

RxJS 將這些操作符實現為 emptyneverthrow

範例程式碼

var source = Rx.Observable.empty();

var subscription = source.subscribe(
    function (x) { console.log('Next: ' + x); },
    function (err) { console.log('Error: ' + err); },
    function () { console.log('Completed'); });
Completed
// This will never produce a value, hence never calling any of the callbacks
var source = Rx.Observable.never();

var subscription = source.subscribe(
    function (x) { console.log('Next: ' + x); },
    function (err) { console.log('Error: ' + err); },
    function () { console.log('Completed'); });
var source = Rx.Observable.return(42)
    .selectMany(Rx.Observable.throw(new Error('error!')));

var subscription = source.subscribe(
    function (x) { console.log('Next: ' + x); },
    function (err) { console.log('Error: ' + err); },
    function () { console.log('Completed'); });
Error: Error: error!

empty 在以下發行版中找到

  • rx.js
  • rx.all.js
  • rx.all.compat.js
  • rx.compat.js
  • rx.lite.js
  • rx.lite.compat.js

never 在以下發行版中找到

  • rx.js
  • rx.compat.js
  • rx.lite.js
  • rx.lite.compat.js

throw 在以下發行版中找到

  • rx.js
  • rx.all.js
  • rx.compat.js
  • rx.lite.js
  • rx.lite.compat.js

RxPHP 將此操作符實現為 empty

返回一個空的 observable 序列。

範例程式碼

//from https://github.com/ReactiveX/RxPHP/blob/master/demo/empty/empty.php

$observable = \Rx\Observable::empty();
$observable->subscribe($stdoutObserver);

   
Complete!
    

RxPHP 還有一個操作符 never

返回一個不終止的 observable 序列,可用於表示無限持續時間。

範例程式碼

//from https://github.com/ReactiveX/RxPHP/blob/master/demo/never/never.php

$observable = \Rx\Observable::never();
$observable->subscribe($stdoutObserver);

   
    

RxPHP 還有一個操作符 error

返回一個以異常終止的 observable 序列。

範例程式碼

//from https://github.com/ReactiveX/RxPHP/blob/master/demo/error-observable/error-observable.php

$observable = Rx\Observable::error(new Exception('Oops!'));
$observable->subscribe($stdoutObserver);

   
Exception: Oops!