事實標準,並不存在與ES6規範中,基於Promise實現。
目前項目中對Promise的兼容性尚存在問題,若是在項目中應用fetch,須要引入es6-promise和fetch。
fis3中能夠經過fis3 install es6-promise
和fis3 install fetch
進行安裝。
如下提到爲了瀏覽器兼容而引入的fech組件時統一使用'fech組件'代替。
該文檔重點針對fetch組件進行詳細說明。git
fetch('/test/content.json').then(function(data){ return data.json(); }).then(function(data){ console.log(data); }).catch(function(error){ console.log(error); });
fetch('/test/content.json', { // url: fetch事實標準中能夠經過Request相關api進行設置 method: 'POST', mode: 'same-origin', // same-origin|no-cors(默認)|cors credentials: 'include', // omit(默認,不帶cookie)|same-origin(同源帶cookie)|include(老是帶cookie) headers: { // headers: fetch事實標準中能夠經過Header相關api進行設置 'Content-Type': 'application/x-www-form-urlencoded' // default: 'application/json' }, body: 'a=1&b=2' // body: fetch事實標準中能夠經過Body相關api進行設置 }).then(function(res){ res: fetch事實標準中能夠經過Response相關api進行設置 return res.json(); }).then(function(data){ console.log(data); }).catch(function(error){ });
fetch('/test/content.json').then(function(res){ console.log(res.bodyUsed); // false var data = res.json(); console.log(res.bodyUsed); //true return data; }).then(function(data){ console.log(data); }).catch(function(error){ console.log(error); });
fetch('/test/content.json').then(function(res){ var headers = res.headers; console.log(headers.get('Content-Type')); // application/json console.log(headers.has('Content-Type')); // true console.log(headers.getAll('Content-Type')); // ["application/json"] for(let key of headers.keys()){ console.log(key); // datelast-modified server accept-ranges etag content-length content-type } for(let value of headers.values()){ console.log(value); } headers.forEach(function(value, key, arr){ console.log(value); // 對應values()的返回值 console.log(key); // 對應keys()的返回值 }); return res.json(); }).then(function(data){ console.log(data); }).catch(function(error){ console.log(error); });
200-299
之間basic
:正常的,同域的請求,包含全部的headers。排除Set-Cookie
和Set-Cookie2
。cors
:Response從一個合法的跨域請求得到,一部分header和body可讀。error
:網絡錯誤。Response的status是0,Headers是空的而且不可寫。當Response是從Response.error()中獲得時,就是這種類型。opaque
: Response從"no-cors"請求了跨域資源。依靠Server端來作限制。fetch('/test/content.json').then(function(data){ var d = data.clone(); d.text().then(function(text){ console.log(JSON.parse(text)); }); return data.json(); }).then(function(data){ console.log(data); }).catch(function(error){ console.log(error); });