成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

RxJS 核心概念Observer & Subscription

tinysun1234 / 1096人閱讀

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

Observer(觀察者)

什么是Observer? Observer(觀察者)是Observable(可觀察對象)推送數(shù)據(jù)的消費者。在RxJS中,Observer是一個由回調(diào)函數(shù)組成的對象,鍵名分別為next、errorcomplete,以此接受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"),
};

調(diào)用Observer邏輯,只需在subscribe(訂閱)Observable后將Observer傳入:

observable.subscribe(observer);

在RxJS中,Observer是可選的。在next、errorcomplete處理邏輯部分缺失的情況下,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時,你甚至可以把回調(diào)函數(shù)作為參數(shù)傳入,而不是傳入完整的Observer對象:

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

在RxJS內(nèi)部,調(diào)用observable.subscribe時,它會創(chuàng)建一個只有next處理邏輯的Observer。當(dāng)然你也可以將nexterrorcomplete的回調(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")
);
Subscription

什么是Subscription? Subscription是一個代表可以終止資源的對象,表示一個Observable的執(zhí)行過程。Subscription有一個重要的方法:unsubscribe。這個方法不需要傳入?yún)?shù),調(diào)用后便會終止相應(yīng)的資源。在RxJS以前的版本中,Subscription被稱為"Disposable"。

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

subscription.unsubscribe(); 

Subscription能夠通過unsubscribe() 函數(shù)終止Observable的執(zhí)行過程并釋放相應(yīng)資源。

Subscription可以嵌套使用:你可以調(diào)用一個Subscription的unsubscribe() 方法來取消一系列嵌套的Subscription。通過add方法,便可以實現(xiàn)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);

執(zhí)行后,控制臺會輸出一下結(jié)果:

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

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

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/79366.html

相關(guān)文章

  • RxJS 核心概念之Subject

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

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

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

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

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

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

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

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

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

    jzzlee 評論0 收藏0

發(fā)表評論

0條評論

tinysun1234

|高級講師

TA的文章

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