Skip to content

Instantly share code, notes, and snippets.

@jintangWang
Created September 29, 2017 09:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jintangWang/5b14561ab236e8a6af4a57b3fc8cee09 to your computer and use it in GitHub Desktop.
Save jintangWang/5b14561ab236e8a6af4a57b3fc8cee09 to your computer and use it in GitHub Desktop.
封装的fetch
const defaultUrl = 'https://cnodejs.org/api/v1';
const header = new Headers({
'Accept': 'application/json',
'Content-Type': 'application/json'
});
const defaultConfig = {
method: 'GET',
headers: header,
mode: 'cors',
credentials: "same-origin", // 设置fetch自动地发送本地的Cookie
cache: 'no-cache',
redirect: 'follow'
};
let checkStatus = (response) => {
if (response.ok) {
return response.json();
} else {
let error = new Error(response.statusText)
error.response = response
throw error
}
};
let $fetch = (url, config) => {
let finalUrl = defaultUrl + url;
let request = config ? new Request(finalUrl, Object.assign({}, defaultConfig, config)) : finalUrl;
const fetchDefer = new Promise((resolve, reject) => {
fetch(request).then(checkStatus).then(data => {
if (data) {
resolve(data) //返回成功数据
} else {
reject(data) //返回失败数据
}
}).catch(error => { //捕获异常
alert(error.response.status + error.response.statusText)
})
});
return fetchDefer
};
export default $fetch;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment