ES6的出現帶來了Promise語法,實現了js的callback的變化;XHR是ajax請求的基礎,以往的異步請求用到了大量的ajax譬如jq等,Promise的基礎上封裝的Fetch API更加優雅 已經大量用於客服端和服務器端,譬如 Axios,本文主要講述Fetch API 與 Ajax的不一樣點和基礎應用,和Axios APIios
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(url).then(
response => response.json()
).then(
data => console.log(data)
).catch(
e => console.log("Oops, error", e)
)
複製代碼
這種是鏈式寫法,第一個獲取請求成功信息,第二個獲取請求失敗信息,第三個捕獲異常git
fetch 接受兩個參數,一個是URL,另外一個「可選」是請求體「method,body,headers...」github
fetch('https://example.com')
複製代碼
var url = 'https://example.com/profile';
var data = {username: 'example'};
fetch(url, {
method: 'POST', // or 'PUT'
body: JSON.stringify(data), // data can be `string` or {object}!
headers: new Headers({
'Content-Type': 'application/json'
})
複製代碼
其餘參照MDN文檔ajax
用法是Fetch與JQ的大集合json
axios.get('https://example.com')
複製代碼
axios.get('/user?ID=12345')
// 用 params 封裝
axios.get('/user', {
params: {
ID: 12345
}
})
複製代碼
axios.post('/user', {
firstName: 'Fred',
lastName: 'Flintstone'
})
複製代碼
axios({
method: 'post',
url: '/user/12345',
data: {
firstName: 'Fred',
lastName: 'Flintstone'
}
});
複製代碼
axios.request(config)
axios.get(url[, config])
axios.delete(url[, config])
axios.head(url[, config])
axios.post(url[, data[, config]])
axios.put(url[, data[, config]])
axios.patch(url[, data[, config]])
複製代碼
MDN使用 Fetchaxios