ObserveOn

指定觀察者 (observer) 將在哪個排程器 (Scheduler) 上觀察此 Observable

ObserveOn

許多 ReactiveX 的實作使用 Scheduler 排程器」 來管理多執行緒環境中 Observable 在執行緒之間的轉換。你可以透過 ObserveOn 運算子,指示 Observable 在特定的排程器上發送通知給觀察者。

ObserveOn

請注意,如果 ObserveOn 收到 onError 終止通知,它會立即轉發,而不會等待緩慢消耗的觀察者先接收到它所知道的任何尚未發出的項目。這可能意味著 onError 通知會跳到來源 Observable 發出的項目之前(並吞噬它們),如上圖所示。

ObserveOn and SubscribeOn

SubscribeOn 運算子與之類似,但它指示 Observable 本身 在指定的排程器上運行,並在該排程器上通知其觀察者。

預設情況下,Observable 和你應用於它的運算子鏈將在調用其 Subscribe 方法的同一個執行緒上執行其工作,並通知其觀察者。SubscribeOn 運算子透過指定 Observable 應運行的不同排程器來改變此行為。ObserveOn 運算子指定 Observable 將用於向其觀察者發送通知的不同排程器。

如本圖所示,無論在運算子鏈中的哪個位置調用,SubscribeOn 運算子都會指定 Observable 將開始運行的執行緒。ObserveOn 則相反,它會影響 Observable 將使用該運算子出現之下的執行緒。因此,你可以在 Observable 運算子鏈的各個位置多次調用 ObserveOn,以更改某些運算子運行的執行緒。

另請參閱

特定語言資訊

待定

observeOn

若要指定 Observable 應在哪個排程器上調用其觀察者的 onNextonCompletedonError 方法,請使用 observeOn 運算子,並將適當的 Scheduler 傳遞給它。

observeOn

若要指定 Observable 應在哪個排程器上調用其觀察者的 onNextonCompletedonError 方法,請使用 observeOn 運算子,並將適當的 Scheduler 傳遞給它。

observeOn

若要指定 Observable 應在哪個排程器上調用其觀察者的 onNextonCompletedonError 方法,請使用 observeOn 運算子,並將適當的 Scheduler 傳遞給它。

範例程式碼

/* Change from immediate scheduler to timeout */
var source = Rx.Observable.return(42, Rx.Scheduler.immediate)
    .observeOn(Rx.Scheduler.timeout);

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

observeOn 可在以下每個發行版本中找到

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