axios 和 fetch 區別對比

2022-06-28 20:21:11 字數 1111 閱讀 8817

axios

axios(

}).then(function (response) )

.catch(function (error) );

axios 是乙個基於promise 用於瀏覽器和 nodejs 的 http 客戶端,本質上也是對原生xhr的封裝,只不過它是promise的實現版本,符合最新的es規範,它本身具有以下特徵:

1.從瀏覽器中建立 xmlhttprequest

2.支援 promise api

3.客戶端支援防止csrf

4.提供了一些併發請求的介面(重要,方便了很多的操作)

5.從 node.js 建立 http 請求

6.攔截請求和響應

7.轉換請求和響應資料

8.取消請求

9.自動轉換json資料

fetch

fetch('')

.then(function(response) )

.then(function(myjson) );

一、fetch優勢:

1.語法簡潔,更加語義化

2.基於標準 promise 實現,支援 async/await

3.同構方便,使用 isomorphic-fetch

4.更加底層,提供的api豐富(request, response)

5.脫離了xhr,是es規範裡新的實現方式

二、fetch存在問題

1.fetch是乙個低層次的api,你可以把它考慮成原生的xhr,所以使用起來並不是那麼舒服,需要進行封裝。

2.fetch只對網路請求報錯,對400,500都當做成功的請求,伺服器返回 400,500 錯誤碼時並不會 reject,只有網路錯誤這些導致請求不能完成時,fetch 才會被 reject。

3.fetch預設不會帶cookie,需要新增配置項: fetch(url, )

4.fetch不支援abort,不支援超時控制,使用settimeout及promise.reject的實現的超時控制並不能阻止請求過程繼續在後台執行,造成了流量的浪費

5.fetch沒有辦法原生監測請求的進度,而xhr可以

fetch和axios區別比較

try catch e 特點 缺點 1 fetch只對網路請求報錯,對400,500都當做成功的請求,需要封裝去處理 2 fetch預設不會帶cookie,需要新增配置項 3 fetch不支援abort,不支援超時控制,使用settimeout及promise.reject的實現的超時控制並不能阻止...

post和get區別對比

post和get區別 標準答案 get在瀏覽器回退時是無害的,而post會再次提交請求。get產生的url位址可以被bookmark,而post不可以。get請求會被瀏覽器主動cache,而post不會,除非手動設定。get請求只能進行url編碼,而post支援多種編碼方式。get請求引數會被完整保...

libevent和libev的區別對比

兩個庫都是為非同步io排程而設計,在linux上都是使用epoll機制,在freebsd上則都是kqueue,還有諸如此類的很多相通之處。libev的誕生,是為了修復libevent設計上的一些錯誤決策。例如,全域性變數的使用,讓libevent很難在多執行緒環境中使用。watcher結構體很大,因...