Angualr
一定對RxJS
不陌生,但要輕易的駕馭它,可不是那麼容易。沒有那麼簡單...
?一次偶然的機會,看到同事用RxJS
將迴圈內的處理完畢,簡單俐落不說,還易讀易維護,這好東西不學~像話嗎?
?
我懂RxJS
的學習並不簡單,所以這一系列的文章,我會以淺顯易懂的方式來闡述我學習RxJS
的歷程。✍
一開始我們先從簡單的基礎觀念先熟悉,不貪多,每天進步一點就是一種成長;就跟少林寺學功夫一樣,先去挑水爬樓梯,蹲蹲馬步練穩下盤後,掌握降龍十八掌不再是難事。
所以~跟著我一起一步一步探索RxJS
!
Source
: 香蕉堆,陸續送出 ~ 第一串香蕉、第二串香蕉、第三串...第N串Process
: 製程,包含各種步驟,如:下一個(next)
傳遞。包裝好的香蕉
,準備出貨囉!pipe
;也就是像管路依樣依序傳遞下去。Subscribe
: 客戶要了解產線的生產狀況,當然會進行訂閱(Subscribe)
;訂閱了,就要開始生產囉
!import { filter, from, map } from 'rxjs';
console.log('=== RxJS模擬香蕉生產線 ===');
const bananaSrc = [1, 2, 3, 4, 5];
const bananaLine$ = from(bananaSrc).pipe(
filter((num) => num % 2 !== 0), // 模擬奇數個是壞掉的
map((banana) => `${banana}: Weight`), // 秤重
map((banana) => `${banana} => Wash`), // 清洗
map((banana) => `${banana} => Package`) // 包裝
);
bananaLine$.subscribe(console.log); // 訂閱,並印出生產資料
//=== RxJS模擬香蕉生產線 ===
// 1: Weight => Wash => Package
// 3: Weight => Wash => Package
// 5: Weight => Wash => Package
RxJS
就是結合Functional Programming
,但這只是他的前菜而已,真正強大的功能在於簡化非同步(async)
的處理程序。RxJS
的思維,就跟生產線一樣,其中進行著被觀察
及觀察
的過程,想看的人可隨時可訂閱
。被觀察(Observable)
: 一串一串的香蕉堆觀察動作(observe)
: filterBad -> Weight => Wash => Package訂閱(subscribe)
: 有人訂閱,代表生產正式啟動,你就可以拿到生產報告。day1
囉,你仍然有很多的疑問,沒關係,我們接下來的每一天,都一點一滴地說明這一切,加油。看到 RxJS 的主題一定要大推!!期待完賽
感謝Mike大的鼓勵,拜讀你的書及天梯網站,受益良多,有機會一定要請你簽名!
奇怪,icon變問號XD ==> 原來是emoji的問題