RxJS 觀察者模式

2020-09-24 15:13 更新

什么是觀察員?觀察者是觀察者傳遞的價值的消費者。觀察者只是一組回調(diào),一個用于由所述可觀測的遞送通知每種類型:next,error,和 complete。以下是典型的 Observer 對象的示例:

const observer = {
  next: x => console.log('Observer got a next value: ' + x),
  error: err => console.error('Observer got an error: ' + err),
  complete: () => console.log('Observer got a complete notification'),
};

要使用 Observer,請將其提供給 subscribeObservable 的:

const observer = {
  next: x => console.log('Observer got a next value: ' + x),
  error: err => console.error('Observer got an error: ' + err),
  complete: () => console.log('Observer got a complete notification'),
};

觀察者只是具有三個回調(diào)的對象,一個針對一 個 Observable 可能傳遞的每種通知類型。

在 RxJS 觀察員也可以是局部的。如果您不提供任何一種回調(diào),則 Observable 的執(zhí)行將仍然正常進(jìn)行,除了某些類型的通知將被忽略,因為它們在 Observer 中沒有相應(yīng)的回調(diào)。

下面的示例是一個沒有 complete回調(diào)的觀察者:

const observer = {
  next: x => console.log('Observer got a next value: ' + x),
  error: err => console.error('Observer got an error: ' + err),
};

訂閱 Observable 時,您也可以只提供回調(diào)作為參數(shù),而不必附加到 Observer 對象,例如:

observable.subscribe(x => console.log('Observer got a next value: ' + x));

在內(nèi)部 observable.subscribe,它將使用第一個回調(diào)參數(shù)作為 next處理程序創(chuàng)建一個 Observer 對象。所有三種回調(diào)類型都可以作為參數(shù)提供:

observable.subscribe(
  x => console.log('Observer got a next value: ' + x),
  err => console.error('Observer got an error: ' + err),
  () => console.log('Observer got a complete notification')
);
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號