Rxjs常用的管道操作符

2021-10-01 10:53:21 字數 3158 閱讀 4723

mep 類似於 array.prototype.map()

switchmap switchmap 會停止發出先前發出的內部 observable 並開始發出新的內部 observable 的值。(可以停止上一次發出的ajax)

mergemap 將每個值對映到observable,必須返回乙個observable

reduce 只返回最後的值

// res: 12, 15

from([2, 3]).pipe(

scan((acc, item) => acc += item, 10))

.subscribe(v => console.log(v))

// res: 15

from([2, 3]).pipe(

reduce((acc, item) => acc += item, 10))

.subscribe(v => console.log(v))

filter 返回你想要的資料

partition 返回兩個 observables [0] 符合斷言, [1] 不符合斷言

from([2, 3, 4]).pipe(

filter(item => item <= 3))

.subscribe(v => console.log(v))

將當前值和前乙個值作為陣列放在一起,然後將其發出

of(1, 2, 3)

.pipe(

pairwise()).subscribe(v => console.log(v))

[1,2]

[2,3]

都可以接收乙個函式作為引數

from([1,2]).pipe(max()).subscribe(l) // 2

from([1,2]).pipe(min()).subscribe(l) // 1

from([1,2]).pipe(count()).subscribe(l) // 2

過濾掉重複的項

from([1, 2, 2, 3, 2])

.pipe(distinct())

.subscribe(l); // 1,2,3

只發出第n個值, 然後完成 ,從0開始

from([1, 2])

.pipe(elementat(0, "default value"))

.subscribe(l);

忽略源所傳送的所有項,只傳遞 complete 或 error

skip 跳過源發出的前n個值

skiplast 跳過源最後發出的的n個值

skipwhile 跳過lambda返回true的值

take 接收源 最初的n個值

takelast 接收源最後n個值

takeuntil notifier發出值, 源斷流

takewhile lambda返回true,才發出源的值

先發出最新的值, 在忽略

先忽略, 在發出最新的值

interval(500)

.pipe(audittime(1000))

.subscribe(l); // 1s後發出 2, 1被忽略

延時傳送源發出的值, 如果期間源發出了新值的話,返回的值為最新的值,上乙個會被丟棄掉(避免高消費事件時使用)

在週期時間間隔內發出源最新值。

類似 array.prototype.find()

把 observable 轉化為 promise

click = async e =>
buffer系列,將過去的值作為陣列收集,在事件觸發時發出收集好的值

const send$= fromevent(document, 'click');

const interval = interval(1000);

const buffered = interval.pipe(buffer(send$));

buffered.subscribe(l);

如果源observable完成而沒有發出任何next值,則發出給定值 ,否則映象源observable

const  = require("rxjs");

const = require("rxjs/operators");

from([1, 2, 2, 3, 2])

.pipe(

mergemap(el => (el > 10 ? of(el) : empty())),

defaultifempty("not data"),

) .subscribe(l); // not data

延遲來自源observable的專案的發射

from([1, 2])

.pipe(endwith("源觀察完成後,附加乙個發射,然後完成。"))

.subscribe(l); // 1, 2, "源觀察完成後,附加乙個發射,然後完成。"

pluck(properties: ...string); 取乙個物件的屬性類似 obj.***.***

toarray(); 把流發出的值塞在array後,返回array

rxjs過濾操作符

一 take操作符 只發出源 observable 最初發出的的n個值 n count 如果源發出值的數量小於 count 的話,那麼它的所有值都將發出。然後它便完成,無論源 observable 是否完成。import from angular core import from rxjs obse...

Rxjs中的操作符

去除重複資料,和所有的資料進行對比。示例一 rx.observable.of 1,2,3,4,1 distinct subscribe x console.log x 輸出為 1,2,3,4 示例二 當然,也可以為distinct傳遞方法,rx.observable.of distinct p p....

RXJS部分操作符解釋

rxjs部分操作符解釋 長寬 const length document.getelementbyid length const width document.getelementbyid width const area document.getelementbyid area 所有的rx資料流後...