亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

【rxjs5.x】filter操作符

Forelax / 3131人閱讀

摘要:操作符防抖動,只有當另一個發(fā)射值時,才取源的最新數據進行發(fā)射,其他數據取消發(fā)射。輸出從源數據集的第一項開始進行發(fā)射,直到另一個開始發(fā)射第一個值時,源停止發(fā)射值。

rxjs5.x filter操作符api debounce

防抖動,只有當另一個Observable發(fā)射值時,才取源Obervable的最新數據進行發(fā)射,其他數據取消發(fā)射。

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

防抖動,一段時間內,只取最新數據進行發(fā)射,其他數據取消發(fā)射。

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

 去除重復的值

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

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

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

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

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ā)射指定位置的元素

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

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

// 輸出奇數: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

只輸出第一個元素

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

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

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

  audit當另一個Observable發(fā)射值前,源Observable的值會被忽略,當另一個Observable發(fā)射值時,才從源Observable發(fā)射一個最新值,然后重復上述過程。

  auditTime在指定等待時間內,源Observable的值會被忽略,等待結束后,發(fā)射一個源Observable的最新值,然后重復上述過程。

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

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

 返回源數據集的最后一個條目

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

 當另一個Observable發(fā)射值時,才從源Observable數據集發(fā)射一個最新值

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

 每隔一定的時間間隔,發(fā)射一個源Observable數據集的最新值

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

 若源Observable數據集只有一個數據項,則輸出該項。若多于一個數據項,則報錯

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

 跳過源Observable數據集的n個數據,然后才發(fā)射值。

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

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

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

忽略源Observable開頭的一系列值,直到有一項符合條件,才開始從源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個數據項進行發(fā)射,其余的數據項將被忽略。

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

用于獲取 Observable 對象發(fā)出的前 n 項值,取完后就結束。

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|

以上代碼運行后,控制臺的輸出結果:

0
1
2
complete
takeLast

從源Obervable的倒數第一個向前數,拿到n個數據項并進行發(fā)射,從開頭開始的的數據項將被忽略。

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

從源Observable數據集的第一項開始進行發(fā)射,直到另一個Observable開始發(fā)射第一個值時,源Observable停止發(fā)射值。

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

從源Observable數據集的第一個數據項開始發(fā)射值,直到遇到符合條件的第一個數據項后,停止源Observable數據集的發(fā)射

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

每當源Observable數據集發(fā)射一個數據項時,會等待另一個Observable發(fā)射值,在等待期間源Observable的值將被忽略并不會發(fā)射,直到另一個Observable發(fā)射了一個值時,才把源Observable的最新值進行發(fā)射

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

每當源Observable數據集發(fā)射一個數據項時,會等待n秒,n秒后輸出源Observable的最新值。

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

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

轉載請注明本文地址:http://www.ezyhdfw.cn/yun/107505.html

相關文章

  • rxjs5.x】Transformation作符

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

    isaced 評論0 收藏0
  • Java 8 Strem基本操作

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

    Jensen 評論0 收藏0
  • MongoDB via C#

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

    zacklee 評論0 收藏0
  • Java 8 數據流教程

    摘要:數據流教程原文譯者飛龍協(xié)議這個示例驅動的教程是數據流的深入總結。但是的數據流是完全不同的東西。數據流是單體,并且在函數式編程中起到重要作用。列表上的所有流式操作請見數據流的?;镜臄祿魇褂锰厥獾谋磉_式,例如,而不是,而不是。 Java 8 數據流教程 原文:Java 8 Stream Tutorial 譯者:飛龍 協(xié)議:CC BY-NC-SA 4.0 這個示例驅動的教程是J...

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

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

    20171112 評論0 收藏0

發(fā)表評論

0條評論

Forelax

|高級講師

TA的文章

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