首先聲明一下,本文不是要講解fetch的具體用法,不清楚的可以參考MDN fetch教程。

引言

說道fetch就不得不提XMLHttpRequest了,XHR在發(fā)送web請求時(shí)需要開發(fā)者配置相關(guān)請求信息和成功后的回調(diào),盡管開發(fā)者只關(guān)心請求成功后的業(yè)務(wù)處理,但是也要配置其他繁瑣內(nèi)容,導(dǎo)致配置和調(diào)用比較混亂,也不符合關(guān)注分離的原則;fetch的出現(xiàn)正是為了解決XHR存在的這些問題。例如下面代碼:

fetch(url).then(function(response) {
  return response.json();}).then(function(data) {
  console.log(data);}).catch(function(e) {
  console.log("Oops, error");});

上面這段代碼讓開發(fā)者只關(guān)注請求成功后的業(yè)務(wù)邏輯處理,其他的不用關(guān)心,相當(dāng)簡單;也比較符合現(xiàn)代Promise形式,比較友好。

fetch是基于Promise設(shè)計(jì)的,從上面代碼也能看得出來,這就要求fetch要配合Promise一起使用。正是這種設(shè)計(jì),fetch所帶來的優(yōu)點(diǎn)正如傳統(tǒng) Ajax 已死,F(xiàn)etch 永生總結(jié)的一樣:

    網(wǎng)友評論