成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

【rxjs5.x】filter操作符

Forelax / 3079人閱讀

摘要:操作符防抖動(dòng),只有當(dāng)另一個(gè)發(fā)射值時(shí),才取源的最新數(shù)據(jù)進(jìn)行發(fā)射,其他數(shù)據(jù)取消發(fā)射。輸出從源數(shù)據(jù)集的第一項(xiàng)開始進(jìn)行發(fā)射,直到另一個(gè)開始發(fā)射第一個(gè)值時(shí),源停止發(fā)射值。

rxjs5.x filter操作符api debounce

防抖動(dòng),只有當(dāng)另一個(gè)Observable發(fā)射值時(shí),才取源Obervable的最新數(shù)據(jù)進(jìn)行發(fā)射,其他數(shù)據(jù)取消發(fā)射。

// 每次點(diǎn)擊,且當(dāng)計(jì)時(shí)器的最新值未被發(fā)射時(shí),才從計(jì)時(shí)器發(fā)射一個(gè)值
Rx.Observable.interval( 1000 )
    .debounce(( ) => Rx.Observable.fromEvent(document, "click"))
    .subscribe(x => console.log( x ));
debounceTime

防抖動(dòng),一段時(shí)間內(nèi),只取最新數(shù)據(jù)進(jìn)行發(fā)射,其他數(shù)據(jù)取消發(fā)射。

// 每隔一秒,輸出一個(gè)計(jì)時(shí)器的值
Rx.Observable.interval( 1000 )
    .debounceTime( 500 )
    .subscribe(x => console.log( x ))
distinct

 去除重復(fù)的值

// 去除重復(fù)的值,輸出A,B,C,b
Rx.Observable.of("A", "B", "C", "A", "b", "B")
    .distinct( )
    .subscribe( x => console.log( x ))
distinctUntilChanged

去除連續(xù)重復(fù)的值

// 去除連續(xù)重復(fù)的元素,輸出A,B,A,B,A
Rx.Observable.of("A", "B", "B", "A", "B", "A", "A")
    .distinctUntilChanged( )
    .subscribe( x => console.log( x ))
distinctKeyUntilChanged

    去除連續(xù)項(xiàng)中,擁有相同給予key值的value的項(xiàng)

let items = [
    { age: 4, name: "Foo"},
    { age: 7, name: "Bar"},
    { age: 5, name: "Foo"},
    { age: 6, name: "Foo"}
]
Rx.Observable.of( ...items )
    .distinctUntilKeyChanged("name") 
    .subscribe( x => console.log( x ))

// 輸出
//  { age: 4, name: "Foo"}
//  { age: 7, name: "Bar"}
//  { age: 5, name: "Foo"}
ElementAt

只發(fā)射指定位置的元素

// 下標(biāo)從0開始,輸出 ‘A’
Rx.Observable.of("A", "B", "B", "A", "B", "A", "A")
    .elementAt( 3 )
    .subscribe( x => console.log( x ))
Filter

自定義過(guò)濾規(guī)則,符合才把該值進(jìn)行發(fā)射

// 輸出奇數(shù):1,2,5,7,9,1
Rx.Observable.of(1,3,2,5,4,7,6,9,1)
    .filter( x => x % 2 !== 0 )
    .subscribe( x => console.log( x ))
First

只輸出第一個(gè)元素

// 只輸出第一個(gè)元素,輸出:1
Rx.Observable.of(1,3,2,5,4,7,6,9,1)
    .first( )
    .subscribe( x => console.log( x ))
ignoreElement

 忽略所有值,一個(gè)也不發(fā)射

// 啥也不輸出
Rx.Observable.of(1,3,2,5,4,7,6,9,1)
    .ignoreElements( )
    .subscribe( x => console.log( x ))
audit、auditTime

  audit當(dāng)另一個(gè)Observable發(fā)射值前,源Observable的值會(huì)被忽略,當(dāng)另一個(gè)Observable發(fā)射值時(shí),才從源Observable發(fā)射一個(gè)最新值,然后重復(fù)上述過(guò)程。

  auditTime在指定等待時(shí)間內(nèi),源Observable的值會(huì)被忽略,等待結(jié)束后,發(fā)射一個(gè)源Observable的最新值,然后重復(fù)上述過(guò)程。

    他們與throttle的區(qū)別是,第一個(gè)值的發(fā)射,是先等待再發(fā)射,而throttle是先發(fā)射第一個(gè)值,然后再等待。

// auditTime
// 輸出2,5,8,11,13...
Rx.Observable.interval( 1000 )
    .auditTime( 2000 )
    .subscribe( x => console.log( x ))
last  

 返回源數(shù)據(jù)集的最后一個(gè)條目

// 返回最后一個(gè)條目,輸出:5
Rx.Observable.of(1,2,3,4,5)
    .last( )
    .subscribe( x => console.log( x ))
sample

 當(dāng)另一個(gè)Observable發(fā)射值時(shí),才從源Observable數(shù)據(jù)集發(fā)射一個(gè)最新值

// 每次點(diǎn)擊輸出一個(gè)計(jì)時(shí)器的最新值
Rx.Observable.interval( 1000 )
    .sample( Rx.Observable.fromEvent( document, "click" ))
    .subscribe( x => console.log( x ))
sampleTime

 每隔一定的時(shí)間間隔,發(fā)射一個(gè)源Observable數(shù)據(jù)集的最新值

// 每隔2秒,分別輸出 0,2,4,6,8....
Rx.Observable.interval( 1000 )
   .sampleTime( 2000 )
   .subscribe( x => console.log( x ))
single

 若源Observable數(shù)據(jù)集只有一個(gè)數(shù)據(jù)項(xiàng),則輸出該項(xiàng)。若多于一個(gè)數(shù)據(jù)項(xiàng),則報(bào)錯(cuò)

// 輸出 1
Rx.Observable.of( 1 )
    .single( )
    .subscribe( x => console.log( x ))
skip

 跳過(guò)源Observable數(shù)據(jù)集的n個(gè)數(shù)據(jù),然后才發(fā)射值。

// 跳過(guò)開頭2個(gè),輸出3,4
Rx.Observable.of(1,2,3,4)
    .skip( 2 )
    .subscribe( x => console.log( x ))
skipUntil

忽略源Observable開頭的一系列值,直到當(dāng)另一個(gè)Observable開始發(fā)射值,才會(huì)從源Observable開始發(fā)射值

// 3秒后,才每秒發(fā)射計(jì)時(shí)器的值,輸出:2,3,4,5,6.....
Rx.Observable.interval( 1000 )
    .skipUntil( Rx.Observable.of( 1 ).delay( 3000 ))
    .subscribe( x => console.log( x ))
skipWhile

忽略源Observable開頭的一系列值,直到有一項(xiàng)符合條件,才開始從源Observable的該值開始,開始發(fā)射值。

// 輸出4,5,3,2,1
Rx.Observable.of( 1, 2, 3, 4, 5, 3, 2, 1)
    .skipWhile( x => x < 4 )
    .subscribe( x => console.log( x ))
  十八、take

    從源Obervable的開頭開始,拿到n個(gè)數(shù)據(jù)項(xiàng)進(jìn)行發(fā)射,其余的數(shù)據(jù)項(xiàng)將被忽略。

// 每秒輸出:0,1,2 后結(jié)束
Rx.Observable.interval( 1000 )
    .take( 3 )
    .subscribe( x => console.log( x ))
take

用于獲取 Observable 對(duì)象發(fā)出的前 n 項(xiàng)值,取完后就結(jié)束。

var source = Rx.Observable.interval(1000);
var example = source.take(3);

example.subscribe({
    next: (value) => { console.log(value); },
    error: (err) => { console.log("Error: " + err); },
    complete: () => { console.log("complete"); }
});

示例 marble 圖:

source : -----0-----1-----2-----3--..
                take(3)
example: -----0-----1-----2|

以上代碼運(yùn)行后,控制臺(tái)的輸出結(jié)果:

0
1
2
complete
takeLast

從源Obervable的倒數(shù)第一個(gè)向前數(shù),拿到n個(gè)數(shù)據(jù)項(xiàng)并進(jìn)行發(fā)射,從開頭開始的的數(shù)據(jù)項(xiàng)將被忽略。

// 輸出5,6,7
Rx.Observable.of( 1,2,3,4,5,6,7 )
    .takeLast( 3 )
    .subscribe( x => console.log( x ))
takeUtil

從源Observable數(shù)據(jù)集的第一項(xiàng)開始進(jìn)行發(fā)射,直到另一個(gè)Observable開始發(fā)射第一個(gè)值時(shí),源Observable停止發(fā)射值。

// 3秒后停止計(jì)時(shí)器的值輸出
Rx.Observable.interval( 1000 )
    .takeUntil( Rx.Observable.of( 1 ).delay( 3000 ))
    .subscribe( x => console.log( x ))
takeWhile

從源Observable數(shù)據(jù)集的第一個(gè)數(shù)據(jù)項(xiàng)開始發(fā)射值,直到遇到符合條件的第一個(gè)數(shù)據(jù)項(xiàng)后,停止源Observable數(shù)據(jù)集的發(fā)射

// 輸出:1,2,3
Rx.Observable.of( 1,2,3,4,3,2,1)
    .takeWhile( x => x < 4 )
    .subscribe( x => console.log( x ))
throttle

每當(dāng)源Observable數(shù)據(jù)集發(fā)射一個(gè)數(shù)據(jù)項(xiàng)時(shí),會(huì)等待另一個(gè)Observable發(fā)射值,在等待期間源Observable的值將被忽略并不會(huì)發(fā)射,直到另一個(gè)Observable發(fā)射了一個(gè)值時(shí),才把源Observable的最新值進(jìn)行發(fā)射

// 輸出0,3,6,9,12.....
// 每次輸出一個(gè)值,至少等待兩秒后,才輸出最新值
Rx.Observable.interval( 1000 )
    .throttle( x => Rx.Observable.interval( 2000 ))
    .subscribe( x => console.log( x ))
throttleTime

每當(dāng)源Observable數(shù)據(jù)集發(fā)射一個(gè)數(shù)據(jù)項(xiàng)時(shí),會(huì)等待n秒,n秒后輸出源Observable的最新值。

// 輸出0,3,6,9,12.....
Rx.Observable.interval( 1000 )
    .throttleTime( 2000 )
    .subscribe( x => console.log( x ))

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/107505.html

相關(guān)文章

  • rxjs5.x】Transformation作符

    摘要:對(duì)對(duì)象發(fā)出的每個(gè)值,使用指定的函數(shù),進(jìn)行映射處理。示例圖以上代碼運(yùn)行后,控制臺(tái)的輸出結(jié)果緩沖源對(duì)象已發(fā)出的值,直到大小達(dá)到給定的最大。該操作符也會(huì)先處理前一個(gè)對(duì)象,在處理下一個(gè)對(duì)象。 map 對(duì) Observable 對(duì)象發(fā)出的每個(gè)值,使用指定的 project 函數(shù),進(jìn)行映射處理。 var source = Rx.Observable.interval(1000); var newe...

    isaced 評(píng)論0 收藏0
  • Java 8 Strem基本操作

    摘要:可以使用方法替換常規(guī)循環(huán)以上代碼的產(chǎn)出所有這些原始流都像常規(guī)對(duì)象流一樣工作,但有以下不同之處原始流使用專門的表達(dá)式,例如代替或代替。原始流支持額外的終端聚合操作,以上代碼的產(chǎn)出有時(shí)將常規(guī)對(duì)象流轉(zhuǎn)換為基本流是有用的,反之亦然。 本文提供了有關(guān)Java 8 Stream的深入概述。當(dāng)我第一次讀到的Stream API,我感到很困惑,因?yàn)樗?tīng)起來(lái)類似Java I/O的InputStream,...

    Jensen 評(píng)論0 收藏0
  • MongoDB via C#

    摘要:對(duì)于查詢的結(jié)果還可以進(jìn)行進(jìn)一步的操作。相當(dāng)于篩選條件,條件之間可是進(jìn)行組合。除了基本的,另外還有對(duì)于數(shù)組的等,對(duì)于時(shí)間有等。閑時(shí)更新如有錯(cuò)誤,多謝指正 安裝 首先需要安裝 MongoDB.Driver 包 nuget 首先的首先,需要安裝好 Mongo 數(shù)據(jù)庫(kù) 下載Mongo 配置好數(shù)據(jù)庫(kù),構(gòu)建好連接字符串就可以繼續(xù)使用了 連接字符串 ! mongodb 默認(rèn)是沒(méi)有用戶名和密...

    zacklee 評(píng)論0 收藏0
  • Java 8 數(shù)據(jù)流教程

    摘要:數(shù)據(jù)流教程原文譯者飛龍協(xié)議這個(gè)示例驅(qū)動(dòng)的教程是數(shù)據(jù)流的深入總結(jié)。但是的數(shù)據(jù)流是完全不同的東西。數(shù)據(jù)流是單體,并且在函數(shù)式編程中起到重要作用。列表上的所有流式操作請(qǐng)見(jiàn)數(shù)據(jù)流的?;镜臄?shù)據(jù)流使用特殊的表達(dá)式,例如,而不是,而不是。 Java 8 數(shù)據(jù)流教程 原文:Java 8 Stream Tutorial 譯者:飛龍 協(xié)議:CC BY-NC-SA 4.0 這個(gè)示例驅(qū)動(dòng)的教程是J...

    XUI 評(píng)論0 收藏0
  • 樂(lè)字節(jié)-Java8新特性之Stream流(下)

    摘要:歸約操作計(jì)算有效訂單總金額有效訂單總金額收集數(shù)據(jù)收集將流轉(zhuǎn)換為其他形式,方法作為終端操作,接收一個(gè)接口的實(shí)現(xiàn),用于給中元素做匯總的方法。 接上一篇:《Java8新特性之stream》,下面繼續(xù)接著講Stream 5、流的中間操作 常見(jiàn)的流的中間操作,歸為以下三大類:篩選和切片流操作、元素映射操作、元素排序操作:showImg(https://segmentfault.com/img/b...

    20171112 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

Forelax

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<