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

資訊專欄INFORMATION COLUMN

【rxjs5.x】Transformation操作符

isaced / 3000人閱讀

摘要:對(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 newest = source.map(x => x + 2); 
newest.subscribe(console.log);

示例 marble 圖:

source: -----0-----1-----2-----3--...
            map(x => x + 2)
newest: -----2-----3-----4-----5--...

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

2
3
4
...
mapTo

對(duì) Observable 對(duì)象發(fā)出的每個(gè)值,映射成固定的值。

var source = Rx.Observable.interval(1000);
var newest = source.mapTo(2); 

newest.subscribe(console.log);

示例 marble 圖:

source: -----0-----1-----2-----3--...
                mapTo(2)
newest: -----2-----2-----2-----2--...

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

2
2
2
...
scan

對(duì) Observable 發(fā)出值,執(zhí)行 accumulator 指定的運(yùn)算,可以簡(jiǎn)單地認(rèn)為是 Observable 版本的 Array.prototype.reduce 。

var source = Rx.Observable.from("hello")
             .zip(Rx.Observable.interval(600), (x, y) => x);

var example = source.scan((origin, next) => origin + next, "");

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

示例 marble 圖:

source : ----h----e----l----l----o|
    scan((origin, next) => origin + next, "")
example: ----h----(he)----(hel)----(hell)----(hello)|

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

h
he
hel
hell
hello
complete

(備注:scan 與 reduce 最大的差別就是 scan 最終返回的一定是一個(gè) Observable 對(duì)象,而 reduce 的返回類型不是固定的)

buffer

緩沖源 Observable 對(duì)象已發(fā)出的值,直到 closingNotifier 觸發(fā)后,才統(tǒng)一輸出緩存的元素

var source = Rx.Observable.interval(300);
var source2 = Rx.Observable.interval(1000);
var example = source.buffer(source2);

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

示例 marble 圖:

source : --0--1--2--3--4--5--6--7..
source2: ---------0---------1--------...
            buffer(source2)
example: ---------([0,1,2])---------([3,4,5]) 

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

[0,1,2]
[3,4,5]
[6,7,8]
....
bufferTime

設(shè)定源 Observable 對(duì)象已發(fā)出的值的緩沖時(shí)間。

var source = Rx.Observable.interval(300);
var example = source.bufferTime(1000);

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

示例 marble 圖:

source : --0--1--2--3--4--5--6--7..
            bufferTime(1000)
example: ---------([0,1,2])---------([3,4,5]) 

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

[0,1,2]
[3,4,5]
[6,7,8]
....
bufferCount

緩沖源 Observable對(duì)象已發(fā)出的值,直到大小達(dá)到給定的最大 bufferSize 。

ar source = Rx.Observable.interval(300);
var example = source.bufferCount(3);

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

示例 marble 圖:

source : --0--1--2--3--4--5--6--7..
            bufferCount(3)
example: ---------([0,1,2])---------([3,4,5]) 

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

[0,1,2]
[3,4,5]
[6,7,8]
....
concatMap

對(duì)每個(gè) Observable 對(duì)象發(fā)出的值,進(jìn)行映射處理,并進(jìn)行合并。該操作符也會(huì)先處理前一個(gè) Observable 對(duì)象,在處理下一個(gè) Observable 對(duì)象。

var source = Rx.Observable.fromEvent(document.body, "click");

var example = source.concatMap(
                e => Rx.Observable.interval(100).take(3));
                
example.subscribe({
    next: (value) => { console.log(value); },
    error: (err) => { console.log("Error: " + err); },
    complete: () => { console.log("complete"); }
});

示例 marble 圖:

source : -----------c--c------------------...
        concatMap(c => Rx.Observable.interval(100).take(3))
example: -------------0-1-2-0-1-2---------...

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

0
1
2
0
1
2

concatMap 其實(shí)就是 map 加上 concatAll 的簡(jiǎn)化寫(xiě)法。

switchMap

對(duì)源 Observable 對(duì)象發(fā)出的值,做映射處理。若有新的 Observable 對(duì)象出現(xiàn),會(huì)在新的 Observable 對(duì)象發(fā)出新值后,退訂前一個(gè)未處理完的 Observable 對(duì)象。

var source = Rx.Observable.fromEvent(document.body, "click");
var example = source.switchMap(
                    e => Rx.Observable.interval(100).take(3));
                
example.subscribe({
    next: (value) => { console.log(value); },
    error: (err) => { console.log("Error: " + err); },
    complete: () => { console.log("complete"); }
});

示例 marble 圖:

source : -----------c--c-----------------...
        concatMap(c => Rx.Observable.interval(100).take(3))
example: -------------0--0-1-2-----------...

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

0
0
1
2

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

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

相關(guān)文章

  • rxjs5.x】filter作符

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

    Forelax 評(píng)論0 收藏0
  • javax.crypto.Cipher 源碼學(xué)習(xí)筆記

    摘要:源碼學(xué)習(xí)筆記該類是用來(lái)加密的引擎類,支持對(duì)稱和非對(duì)稱加密。函數(shù)創(chuàng)建對(duì)象操作其中方法是在中操作的方法,其他幾個(gè)都使用執(zhí)行。狀態(tài)變化內(nèi)部類內(nèi)部類是用來(lái)解析中傳入的字符串的。查詢時(shí),也會(huì)查詢別名是否等于。知其然知其所以然。 javax.crypto.Cipher 源碼學(xué)習(xí)筆記 該類是JCE用來(lái)加密的引擎類,支持對(duì)稱和非對(duì)稱加密。該類的介紹可以參考:[[譯]JCA參考指南(二):核心類和接口]...

    余學(xué)文 評(píng)論0 收藏0
  • 《從0到1學(xué)習(xí)Flink》—— Flink Data transformation(轉(zhuǎn)換)

    摘要:這些切片稱為窗口。函數(shù)允許對(duì)常規(guī)數(shù)據(jù)流進(jìn)行分組。通常,這是非并行數(shù)據(jù)轉(zhuǎn)換,因?yàn)樗诜欠謪^(qū)數(shù)據(jù)流上運(yùn)行。 showImg(https://segmentfault.com/img/remote/1460000017874226?w=1920&h=1271); 前言 在第一篇介紹 Flink 的文章 《《從0到1學(xué)習(xí)Flink》—— Apache Flink 介紹》 中就說(shuō)過(guò) Flink ...

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

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

0條評(píng)論

閱讀需要支付1元查看
<