46 lines
829 B
JavaScript
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;
|
|
}
|
|
}
|
|
}
|