--- tags: Angular title: Angular Rxjs description: 敘述基本運用Rxjs向Server端 發起請求 --- # 淺談Angular 與 Rxjs 應用 **概述** 在Web端的世界裡面,取任何資源都是同步(Async)的,比如我們希望可以顯示資料庫的東西,必須先向Server端提取資料,等檔案回來之後再放到前端頁面上,這就是同步的行為,但是隨著網頁端越來越複雜的程式碼,我們所寫的Javascript,有各種不同非同步的寫法,比如callback 或是 Promise 物件甚至是新的語法糖 async/await,而今天我要來說的就是RxJs 在處理非同步的需求中,我們時常會遇到許多問題,比如RaceCondition,Memory Leak,Exception Handling 透過RxJs這樣的套件庫,我們可以輕易解決上述的問題,透過簡潔的寫法,讓程式碼能更增加可易讀型 **Rxjs基本介紹** Reactive Extensive,縮寫為Reactive X Rx有非常多的版本,其中Javascript的版本就叫做RxJs RxJs主要是用來處理非同步事件的Javascript函式庫 在了解RxJs之前,一定要先了解以下RxJs的核心概念 - Observable - 可觀察物件:代表未來會發生事件的事件資料 - Observe - 觀察者物件:用來接收『觀察結果』 的物件 - Subscription - 訂閱物件:代表正在執行的物件 - Operater - 運算物件:用來處理一系列的資料運算 一句話解釋:Observable是一個可以被觀察的物件,當Observable發生事件時,Observe會去執行,回傳一個Subscription,可以利用Operater去做運算 **利用Rxjs 向Server 端發起請求** 以下我們會透過Angular與RxJs結合,來向後端發起一個完整的API 第一步:先在建起一個Service 做一個 方法回傳Observable RxJs 建立觀察物件 --- ![](https://i.imgur.com/ZqMCuNV.png) --- 第二步:在Component裡面開一個方法,呼叫Service,接著訂閱這個Observable RxJs 進行非同步請求 --- ![](https://i.imgur.com/YmfSzdx.png) --- 第三步:做一個錯誤處理,RxJs這裡有提供一個錯誤處理的方式,可以利用類似try catch的動作做錯誤處理 RxJs 進行錯誤處理 --- ![](https://i.imgur.com/ITUvEK7.png) --- 第四步:別忘了要關閉資料流防止記憶體外洩 RxJs 防止記憶體外洩 --- 總結: RxJs函式庫幫我們網頁中非同步的請求做了許多簡化的程式碼,讓非同步的請求變得更簡單也更容易