promise 封装http请求
今天研究了一下同事封装的http请求,用的是promise。然后我就研究了下。
大结构是:
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。const __fetch = (url, data = {}, config = {}) => { let params = Object.assign({}, data); config.headers = Object.assign({}, config.headers, { "Content-Type": "application/json", "Access-Control-Allow-Origin": "*" }); config.body = JSON.stringify(params) return Promise.race([ fetch(url, config), //ES6的fetch方法 new Promise((resolve, reject) => { setTimeout(() => reject({ code: '504', msg: '请求超时' }), config.timeout || 20000) //处理超时 }) ]).then(response => { if (response.status != 200) { return Promise.reject({ code: response.status, msg: '请求失败' }) } return response.json() }, error => { if (error && error.code) { return Promise.reject(error) } }).then(response => new Promise((resolve, reject) => { if (response & response.code && response.code === '000') { resolve(response.data) } else { reject(response) } })).catch((e) => { if (!e || !e.code) return Promise.reject({ code: '999' }) if (parseInt(e.code) === 998) return Promise.reject(e) return Promise.reject({ code: e.code }) }) } } const post=(url,data={},config={})=>{ config.method='POST' return __fetch(url,data,config) }

更多精彩