前端RxJs響應式程式設計之運算子實踐
常用運算子
本地使用環境為rollup+rxjs,具體的rollup配置,請參考另一篇文章,這裡不再贅述。
import { of,Observable, interval,Subject ,from,bindCallback} from 'rxjs';
import { version } from './package.json';
import { ajax } from 'rxjs/ajax';
import { map, catchError } from 'rxjs/operators';
const someFunction = (a, b, c) => {
console.log("a"); // 5
console.log("b"); // 'some string'
console.log("c"); // {someProperty: 'someValue'}
};
const boundSomeFunction = bindCallback(someFunction);
boundSomeFunction().subscribe(values => {
console.log(values) // [5, 'some string', {someProperty: 'someValue'}]
});
from
//逐行輸出 1,2,3
import { from} from 'rxjs';
const arr = [1,2,3];
const result$ = from(arr);
result$.subscribe(res => console.log(res));
range
//逐行輸出 1-10
import { range } from 'rxjs';
const numbers = range(1, 10);
numbers.subscribe(x => console.log(x));
timer
//1 ....
import { timer } from 'rxjs';
const numbers = timer(3000,1000); //延遲3s,定時1s
numbers.subscribe(x => console.log(x+1));
interval
// 1....
import { interval } from 'rxjs';
const numbers = interval(1000);
numbers.subscribe(x => console.log(x+1));
of
// 輸出陣列 [1,2,3]
import { of } from "rxjs";
const arr = [1,2,3]
const result$ = of(arr);
result$.subscribe(res => console.log(res));
// 逐行1,2,3
const result$ = of(1,2,3);
result$.subscribe(res => console.log(res));
條件判斷
import { defer, fromEvent, interval,of } from 'rxjs';
const clicksOrInterval = defer(() => { //es6 支援
return Math.random() > 0
? of('click')
: interval(1000);
});
clicksOrInterval.subscribe(x => console.log(x));
import { defer, fromEvent, interval,of, iif } from 'rxjs';
let isFisrt;
const clicksOrInterval = iif(
() => isFisrt,
of('first'),
of('second')
);
isFisrt = true;
clicksOrInterval.subscribe(x => console.log(x));
isFisrt = false;
clicksOrInterval.subscribe(x => console.log(x));
延遲
import { fromEvent ,of} from 'rxjs';
import { delay } from 'rxjs/operators';
const res = of(1,2,3);
const delayedClicks = res.pipe(delay(1000)); // each click emitted after 1 second
delayedClicks.subscribe(x => console.log(x));
防抖
import { fromEvent } from 'rxjs';
import { throttle } from 'rxjs/operators';
const clicks = fromEvent(document, 'click');
const result = clicks.pipe(throttle(ev => interval(1000)));
result.subscribe(x => console.log(x));
map
import { of} from 'rxjs';
import { delay,map} from 'rxjs/operators'; //注意map引入
const res = of(1,2,3);
const delayedClicks = res.pipe(map(item => item * 2)); // each click emitted after 1 second
delayedClicks.subscribe(x => console.log(x));
filter
import { of} from 'rxjs';
import { delay,filter} from 'rxjs/operators';
const res = of(1,2,3);
const delayedClicks = res.pipe(filter(item => item % 2 === 0)); // each click emitted after 1 second
delayedClicks.subscribe(x => console.log(x));
本文作者:前端首席體驗師(CheongHu)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4830/viewspace-2824222/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- RxJS 系列故事(1)——理解響應式程式設計JS程式設計
- 響應式程式設計簡介之:Reactor程式設計React
- [譯]Flutter 響應式程式設計:Steams 和 BLoC 實踐範例Flutter程式設計BloC
- 前端響應式佈局原理與實踐前端
- 淺談前端響應式設計(一)前端
- 淺談前端響應式設計(二)前端
- 高效前端程式設計實踐前端程式設計
- 使用Reactor響應式程式設計React程式設計
- 函式響應式程式設計與RxSwift函式程式設計Swift
- 雞啄米:C++程式設計入門系列之五(運算子和表示式)C++程式設計
- 響應式程式設計入門(RxJava)程式設計RxJava
- 響應式程式設計庫RxJava初探程式設計RxJava
- 揚帆起航:從指令式程式設計到函式響應式程式設計程式設計函式
- rxjs入門4之rxjs模式設計JS模式
- 響應式程式設計機制總結程式設計
- framebuffer應用程式設計實踐程式設計
- Tailwind CSS 響應式設計實戰指南AICSS
- 響應式程式設計在 SAP 標準產品 UI 開發中的一個實踐程式設計UI
- Rxjs TakeUntil 運算子的學習筆記JS筆記
- 完美解釋 Javascript 響應式程式設計原理JavaScript程式設計
- 對響應式程式設計的懷疑 - lukaseder程式設計
- Kotlin Flow響應式程式設計,StateFlow和SharedFlowKotlin程式設計
- C# 鏈式程式設計實踐之檔案校驗C#程式設計
- Java程式設計方法論-響應式 之 Rxjava篇 視訊解讀程式設計RxJava
- RxJS實踐,Vue如何整合RxJSJSVue
- 好程式設計師Python教程系列分享之Python語言元素之運算子程式設計師Python
- Rxjs debounce 運算子在 SAP Spartacus 函式節流中的一個實際使用例子JS函式
- 響應式前端框架前端框架
- RxJs 運算子 withLatestFrom 在 SAP 電商雲 Spartacus UI 中的應用JSUI
- [翻譯] 響應式程式設計(Reactive Programming) - 流(Streams) - BLoC - 實際應用案例程式設計ReactBloC
- 使用Java 9 Flow進行響應式程式設計Java程式設計
- PyThon程式設計必看!python加法運算子的用法Python程式設計
- C程式設計語言讀書筆記:型別運算子與表示式C程式程式設計筆記型別
- 前端響應式詳解前端
- 響應式設計?響應式設計的基本原理是什麼?如何做?
- 響應式程式設計與MVVM架構—理論篇程式設計MVVM架構
- Spring 5與Spring cloud的響應式程式設計之旅SpringCloud程式設計
- C++入門程式設計----C++運算子(8)C++程式設計