重點突破 fetch 方法介紹

2022-06-25 02:36:12 字數 954 閱讀 3084

前言:ant-design-pro的

技術組成主要是react+redux+dva+antd+fetch+roadhog,dva在原始碼包index.js裡面匯出了fetch,但是如果不想使用fetch庫,想換成其他庫也是可以的(axios後期擴充套件性更好些),roadhog主要是基於webpack實現的封裝。關於fetch傳送請求的**都封裝在了utils/request.js檔案中。ps:

在上面這個示例中,我們在使用json解析響應前首先檢查響應狀態碼是否為200。

乙個fetch()請求的響應為乙個stream物件,這表示當我們呼叫json()方法,將返回乙個promise物件,因為流的讀取將為乙個非同步過程。

"same-origin":只在請求同域中資源時成功,其他請求將被拒絕。

"cors":允許請求同域及返回cors響應頭的域中的資源。

"cors-with-forced-preflight":在發出實際請求前執行preflight檢查。

"no-cors":針對的是向其他不返回cors響應頭的域中的資源發出的請求(響應型別為「opaque」),但如前所述,目前在頁面指令碼**中不起作用。

在上述**中,我們定義了status函式,該函式檢查響應的狀態碼並返回promise.resolve()方法或promise.reject()方法的返回結果(分別為具有肯定結果的promise及具有否定結果的promise)。這是fetch()方法鏈中的第乙個方法。如果返回肯定結果,我們呼叫json()函式,該函式返回來自於response.json()方法的promise物件。在此之後我們得到了乙個被解析過的json物件,如果解析失敗promise將返回否定結果,導致catch段**被執行。

這樣書寫的好處在於你可以共享fetch請求的邏輯,**容易閱讀、維護及測試。

Fetch封裝方法

fetch是乙個與ajax請求功能相似的乙個請求介面,並且只有瀏覽器該方法。fetch的出現一方面是為了緩解原生xmlhttprequest實現起來比較雜亂的問題。下面是乙個例子 用xhr物件實現ajax請求 xhr.send 用fetch實現ajax請求 fetch url,then res th...

Android重點知識突破系列 開篇

一路走來,工作馬上滿三年了。作為一名android開發工程師,我思考了三年的工作與成長,感覺必須做出改變了。認真反思後我發現自身存在如下這些嚴重的問題 1.android知識不成體系,零零散散,總是頭疼醫頭腳疼醫腳,學了不用就都忘記了。2.對android的理解較淺,僅僅停留在滿足一些業務開發上,業...

封裝axios和fetch方法

比較兩種請求方式 3.比較fetch和axios fetch並沒有進行封裝,拿到就是格式化後的資料 3.更多詳情請參考 axios和fetch請求詳解 axios封裝 封裝一下axios 它是乙個函式,因為它要攜帶引數 function request then res resolve res ca...