// 用js的function 来模拟class const http = () => { NProgress.configure({ easing: 'ease', speed: 200, trickleSpeed: 150 }); const init = () => { return new XMLHttpRequest(); } const get = (params) => { let http = init() NProgress.start(); return new Promise((success, error) => { http.open("get", handleGetParams(params)) http.send() readystatechange(http, success, error) }) } const post = (params) => { let http = init() NProgress.start(); return new Promise((success, error) => { http.open("post", config.checkStage() + params.url) http.setRequestHeader("Content-Type", "application/json") http.send(JSON.stringify(params.data)) readystatechange(http, success, error) }) } const readystatechange = (ajax, success, error) => { ajax.onreadystatechange = () => { // http status // ajax readyState // 接口提供的 标识当前你访问的接口操作的 具体信息 if (ajax.readyState == 4) { if (ajax.status == 200) { NProgress.done(); let result = JSON.parse(ajax.responseText) switch (result.status) { case 200: success(result.data) break; case 500: alert(result.message) break; default: break; } } else { error(ajax) console.error(ajax) } } } } // 处理get请求参数并 拼接地址 const handleGetParams = (params) => { let str = "" for (const key in params.data) { str += `&${key}=${params.data[key]}` } str = str.replace("&", "?") return config.checkStage() + params.url + str } return { get, post } }