傳統 Ajax 指的是 XMLHttpRequest 即 XHRhtml
Fetch API 提供了一個獲取資源的接口(包括跨域)。任何使用過 XMLHttpRequest
的人都能輕鬆上手,但新的API提供了更強大和靈活的功能集。git
Fetch原生支持率:es6
fetch兼容性:github
如下內容轉載:http://caibaojian.com/fetch-ajax.htmlajax
XMLHttpRequest 是一個設計粗糙的 API,不符合關注分離(Separation of Concerns)的原則,配置和調用方式很是混亂,並且基於事件的異步模型寫起來也沒有現代的 Promise,generator/yield,async/await 友好。·json
Fetch 的出現就是爲了解決 XHR 的問題,拿例子說明:跨域
使用 XHR 發送一個 JSON 請求通常是這樣:異步
var xhr = new XMLHttpRequest(); xhr.open('GET', url); xhr.responseType = 'json'; xhr.onload = function() { console.log(xhr.response); }; xhr.onerror = function() { console.log("Oops, error"); }; xhr.send();
使用 Fetch 後,頓時看起來好一點async
fetch(url).then(function(response) { return response.json(); }).then(function(data) { console.log(data); }).catch(function(e) { console.log("Oops, error"); });
fetch(url).then(response => response.json()) .then(data => console.log(data)) .catch(e => console.log("Oops, error", e))