RxJS 觀察者模式

2020-09-24 15:13 更新

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

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,請(qǐng)將其提供給 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'),
};

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

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

下面的示例是一個(gè)沒有 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 時(shí),您也可以只提供回調(diào)作為參數(shù),而不必附加到 Observer 對(duì)象,例如:

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

在內(nèi)部 observable.subscribe,它將使用第一個(gè)回調(diào)參數(shù)作為 next處理程序創(chuàng)建一個(gè) Observer 對(duì)象。所有三種回調(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)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)