class HTTP { constructor({ baseUrl }) { this.baseUrl = baseUrl; this.hangUp = []; this.intercept = false; this.logInAgain = null; } request({ url, data = {}, method = "POST", header = { 'content-type': 'application/json' }, showLoading = '' }) { return new Promise((resolve, reject) => { if (this.intercept && url != '/index/loginbywechat') { this.hangUp.push({ url, resolve, reject, data, method, header, showLoading }) } else { this._request(url, resolve, reject, data, method, header, showLoading); } }) } _request(url, resolve, reject, data, method, header, showLoading) { if (showLoading) uni.showLoading({ title: showLoading, mask: true }) uni.request({ url: this.baseUrl + '/yos/rest' + url, data: data, method: method, header: header, timeout: 60000, success: res => { if (res.data.msg == '登陆状态已过期,请重新登陆!') { this.intercept = true; this.hangUp.push({ url, resolve, reject, data, method, header, showLoading }) if (this.logInAgain == null) this.wechatLogin().then(token => { Promise.all(this.hangUp.map(v => { v.data.accesstoken = token; v.data.date = Date.now() return this._request(v.url, v.resolve, v.reject, v.data, v.method, v.header, v.showLoading); })).then(res => { console.log("重新获取数据") this.hangUp = [] this.intercept = false; this.logInAgain = null; }) }) } else { resolve(res.data) } }, fial: err => reject(err), complete: (res) => { if (showLoading) uni.hideLoading() if (res.errMsg != 'request:ok') uni.showToast({ title: '网络异常,请稍后再试', icon: "none" }) } }) } } export { HTTP }