天天看點

前端網絡請求: Axios + RxJS

RxJS

RxJS 中文文檔

RxJS github 位址

1. RxJS 是使用 Observables 的響應式程式設計的庫,它使編寫異步或基于回調的代碼更容易。

2. RxJS 的 Observable可以認為是加強版的Promise,它們之間是可以通過RxJS的API互相轉換的:

const observable = Observable.fromPromise(promise); // Promise轉為Observable
const promise = observable.toPromise(); // Observable轉為Promise
           

Axios

Axios 中文文檔

Axios github 位址

1. Axios 是一個基于 promise 的 HTTP 庫,可以用在浏覽器和 node.js 中。

2. Axios 特性

  • 從浏覽器中建立 XMLHttpRequests
  • 從 node.js 建立 http 請求
  • 支援 Promise API
  • 攔截請求和響應
  • 轉換請求資料和響應資料
  • 取消請求
  • 自動轉換 JSON 資料
  • 用戶端支援防禦 XSRF

3. Axis 安裝、用法,詳細API 參照 Axios 中文文檔

Axios + RxJS

1. Axios和RxJS均基于Promise,處理異步和回調更加優雅,編寫相關代碼也更簡單。

2. 攔截器axios.interceptors,攔截request,全局請求設定;攔截response,對data或error全局處理。

3. 報錯處理清晰明了,interceptors處理全局報錯(globalErrHandle);catch處理代碼層報錯(cancel、requestErr、responseErr);subscribe處理業務層報錯(errorsHandle)。

4. axios 發起的請求可以主動取消,請求還可以設定逾時處理。

5. axios 适應多端,浏覽器、node.js、react-native、vue.js。