国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

RxJS 核心概念Observer & Subscription

tinysun1234 / 1039人閱讀

摘要:在中,是一個由回調函數組成的對象,鍵名分別為和,以此接受推送的不同類型的通知,下面的代碼段是的一個示例調用邏輯,只需在訂閱后將傳入在中,是可選的。當然你也可以將和的回調函數分別傳入什么是是一個代表可以終止資源的對象,表示一個的執行過程。

Observer(觀察者)

什么是Observer? Observer(觀察者)是Observable(可觀察對象)推送數據的消費者。在RxJS中,Observer是一個由回調函數組成的對象,鍵名分別為nexterrorcomplete,以此接受Observable推送的不同類型的通知,下面的代碼段是Observer的一個示例:

var 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邏輯,只需在subscribe(訂閱)Observable后將Observer傳入:

observable.subscribe(observer);

在RxJS中,Observer是可選的。在nexterrorcomplete處理邏輯部分缺失的情況下,Observable仍然能正常運行,為包含的特定通知類型的處理邏輯會被自動忽略。

下面例子中Observer并不包含complete類型通知的處理邏輯:

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

在訂閱Observable時,你甚至可以把回調函數作為參數傳入,而不是傳入完整的Observer對象:

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

在RxJS內部,調用observable.subscribe時,它會創建一個只有next處理邏輯的Observer。當然你也可以將nexterrorcomplete的回調函數分別傳入:

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")
);
Subscription

什么是Subscription? Subscription是一個代表可以終止資源的對象,表示一個Observable的執行過程。Subscription有一個重要的方法:unsubscribe。這個方法不需要傳入參數,調用后便會終止相應的資源。在RxJS以前的版本中,Subscription被稱為"Disposable"

var observable = Rx.Observable.interval(1000);
var subscription = observable.subscribe(x => console.log(x));

subscription.unsubscribe(); 

Subscription能夠通過unsubscribe() 函數終止Observable的執行過程并釋放相應資源。

Subscription可以嵌套使用:你可以調用一個Subscription的unsubscribe() 方法來取消一系列嵌套的Subscription。通過add方法,便可以實現Subscription的嵌套:

var observable1 = Rx.Observable.interval(400);
var observable2 = Rx.Observable.interval(300);

var subscription = observable1.subscribe(x => console.log("first: " + x));
var childSubscription = observable2.subscribe(x => console.log("second: " + x));

subscription.add(childSubscription);

setTimeout(() => {
  // 終止所有嵌套的Subscription
  subscription.unsubscribe();
}, 1000);

執行后,控制臺會輸出一下結果:

second: 0
first: 0
second: 1
first: 1
second: 2

此外,Subscription提供了remove(otherSubscription)方法,可以刪除一個Subscription嵌套的子Subscription。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/79366.html

相關文章

  • RxJS 核心概念之Subject

    摘要:返回的對象同時是類型的,擁有方法。由于調用后,開始執行,因此,會返回一個供調用者來終止執行。是的一個衍生類,具有最新的值的概念。舉一個形象的例子,表示一個人的生日,而則表示一個人的歲數。 什么是Subject? 在RxJS中,Subject是一類特殊的Observable,它可以向多個Observer多路推送數值。普通的Observable并不具備多路推送的能力(每一個Observer...

    weij 評論0 收藏0
  • Rxjs 核心概念

    摘要:仿宋可以把想像成一個可以發射事件的庫。在中用來處理異步事件的核心概念包括代表了未來可能會產生的一系列的值或事件的集合回調函數的集合,它知道如何去處理上產生的值或者事件,當然也包括異常。 又一年要過去了,回顧2017,rxjs始終是我在項目里使用最頻繁的庫,在我看來,它是一個非常優秀的數據處理工具。年初的時候就計劃寫點什么,礙于目前公司的項目實在抽不出時間,這一拖就到了年底。臨近新年,總...

    Youngdze 評論0 收藏0
  • RxJs 核心概念之Observable

    摘要:函數調用后同步計算并返回單一值生成器函數遍歷器遍歷過程中同步計算并返回個到無窮多個值異步執行中返回或者不返回單一值同步或者異步計算并返回個到無窮多個值是函數概念的拓展既不像,也不像是。如果不調用函數,就不會執行如果如果不訂閱,也不會執行。 Observable(可觀察對象)是基于推送(Push)運行時執行(lazy)的多值集合。下方表格對Observable進行了定位(為解決基于推送的...

    forrest23 評論0 收藏0
  • [譯]RxJS文檔03——剖析Observable

    摘要:通過執行和可以向訂閱者推送不同的通知。之后,執行過程可能被處理掉。當調用并得到觀察者時,在中傳入的函數將會被執行。每次執行都會觸發一個單獨針對當前的運行邏輯。通知不發出任何值,表示流的結束。 原文:http://reactivex.io/rxjs/manu... Rx.Observalbe.create()或者創建操作符,可以 創建(created) Observable流。Obser...

    netScorpion 評論0 收藏0
  • 通俗的方式理解RxJS

    摘要:到底是什么先上代碼輸出這里可以把想象成一個函數,這意味著你每次調用都會導致傳入里的回調函數重新執行一次調用的方式為相當于。接收函數返回值的方式也從改為通過傳入回調函數的方式獲取。具體看代碼運行結果如上的第一個回調函數里的結構是推薦的結構。 通俗的方式理解Rx.js 序言 今早看民工叔的文章的時候, 發現對Rxjs所知甚少, 于是去官方看了下教程, 整理出一些東西, 寫成此文。Rxjs據...

    jzzlee 評論0 收藏0

發表評論

0條評論

tinysun1234

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<