export class EventToken {
_callback: any;
_stop = false;
static create() {
return new EventToken();
}
set(callback: any) {
this._callback = callback;
}
stop() {
this._stop = true;
}
resume() {
if (this._callback) {
this._callback();
}
}
play(response: any) {
if (!this._stop && this._callback) {
(this as any)._callback(response);
}
}
}
request.interceptors.request.use(function(config) {
if (typeof config.type === 'string') {
if (config.type === 'form' && typeof config.data !== 'string') {
const arrayFormat: any = config.formArrayFormat || 'repeat';
config.data = qs.stringify(config.data, { arrayFormat });
if (config.headers) {
config.headers = {
...config.headers,
Accept: '*/*',
'Content-type': 'application/x-www-form-urlencoded',
};
} else {
config.headers = {
Accept: '*/*',
'Content-type': 'application/x-www-form-urlencoded',
};
}
}
}
return config;
});
request.interceptors.response.use(
function(response) {
const eventToken = response ? response.config.eventToken : null;
let stop;
function handle() {
if (response.data.code !== 200) {
let errorMessage;
try {
errorMessage = response.data.msg;
} catch (e) {
errorMessage = '系统错误,请稍后再试';
}
message.error(errorMessage);
}
return response.data.code !== 200;
}
if (eventToken) {
eventToken.play(response);
} else {
stop = handle();
}
if (!stop) {
return response;
} else {
return Promise.reject(response);
}
},
function(error) {
console.log('error', error);
let errorMessage;
if (error.response.data.code === 401) return Promise.reject(error);
try {
errorMessage = error.response.data.msg;
} catch (e) {
errorMessage = '系统错误,请稍后再试';
}
message.error(errorMessage);
return Promise.reject(error);
},
);