了解更多装诡,請關(guān)注我的微信公眾號:mellong
本周逻杖,新的Fetch標(biāo)準(zhǔn)已經(jīng)登陸Chrome Canary(version 42)壮虫。這是我一直在等待的規(guī)格之一澳厢。用一個簡潔的界面確實簡化了XMLHttpRequest,并配有內(nèi)置保證囚似。
所以剩拢,給你一些的認識,這里是你目前怎么寫一個XMLHttpRequest:
var req = new XMLHttpRequest();req.onload = function () {
console.log(this.responseText);
};
req.open('GET', 'http://someendpoint.com/api/stuff', true);
req.send();
這是一個非常簡單的例子饶唤,如你所知徐伐,它可以在你開始處理錯誤的情況下得到更多詳細的信息。
而現(xiàn)在募狂,這是和window.fetch()進行網(wǎng)絡(luò)請求一樣的办素,但不一樣的是額外增加了錯誤處理:
window.fetch('http://someendpoint.com/api/stuff').then(function (response) {
return reponse.text();
}).then(function (text) {
console.log(text);
}).catch(function (e) {
console.log(e);
});
在我看了這種寫法更簡單,而且祸穷,這也是定制的:
window.fetch('http://someendpoint.com/api/stuff', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({ someField: 1234, anotherField: 'foobar' })
}).then(function (response) {
return reponse.text();
}).then(function (text) {
console.log(text);
}).catch(function (e) {
console.log(e);});
看一看這個規(guī)范性穿,這里面還有包括更多的特性。
那么其他瀏覽器支持嗎雷滚?
Github上發(fā)布了一個Fetch polyfill工具需曾,與所有的瀏覽器工作得很好(IE9+在內(nèi)),只要確保你也安裝es6-promise
polyfill工具來保證支持舊的瀏覽器揭措。
翻譯源文: http://blog.rogeriopvl.com/archives/simple-xmlhttprequests-with-window.fetch/