szyj_mp_test/src/utils/MessageQueue.js
2022-07-07 11:36:03 +08:00

46 lines
829 B
JavaScript

import { Toast } from 'vant';
export default class MessageQueue {
constructor(queue = [], duration = 2000) {
this.queue = queue;
this.duration = duration;
this.queueing = false;
}
pushQueue(data) {
this.queue.push(data);
this.update();
}
update() {
console.log('update');
if (!this.queueing) {
this.next();
}
}
clear() {
this.queue = [];
}
next() {
if (this.queue.length) {
this.queueing = true;
const data = this.queue.shift();
Toast.fail({
duration: this.duration,
message: data.msg,
onClose: () => {
if (data.code === -999 || data.code === -998) {
this.clear();
} else {
this.next();
}
},
});
} else {
this.queueing = false;
}
}
}