Fetch请求
為什么要用Fetch請求?
XMLHttpRequest是一個設計粗糙的API,不符合關注分離的原則,盡管開發者只關心請求成功后的業務處理,但是也要配置其他繁瑣內容,導致配置和調用方式非常混亂,而且基于事件的異步模型寫起來也沒有現代的Promise、async/await好。
?
Fetch()方法用于發起獲取資源的請求,他返回一個promise,這個promise會在請求響應后被resolve,并傳回Response對象。
使用XHR發送一個json請求一般是這樣:
var url="fetch.json"; var xhr=new XMLHttpRequest(); xhr.open('GET',url,true);xhr.responseType='json'; xhr.send(); xhr.onreadystatechange=function(){if(xhr.readyState==4&&xhr.status==200){console.log(xhr.response);} }
使用Fetch請求后,頓時簡單明了
fetch(url,{攜帶的參數
}).then(response=>response.json()) .then(data=>{console.log(data); })
fetch()請求返回的response是Stream對象,因此需要調用response.json()是由于異步讀取流對象,所以返回的是一個Promise對象。
?
Fetch請求的優點:
(1)語法簡單,更加語義化;
(2)基于Promise實現,支持async/await
?
Fetch請求常見坑:
(1)Fetch請求默認是不帶Cookie的,需要fetch(url,{credentials:'include'})
(2)服務器返回400、500錯誤碼時并不會reject,只有網絡錯誤這些導致請求不能完成時,fetch才會被reject。
(3)兼容性問題
?
轉載于:https://www.cnblogs.com/xiaoan0705/p/11279010.html
總結
- 上一篇: script学习,如何用linux监控你
- 下一篇: [PM Tools]软件项目进度跟踪表v