12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- // utils/queueManager.js
- class QueueManager {
- constructor() {
- this._tasks = [];
- this._listenMap = {};
- this._timer = null;
- this._interval = 20;
- }
- // static get instance() {
- // if (!QueueManager._instance) {
- // QueueManager._instance = new QueueManager();
- // }
- // return QueueManager._instance;
- // }
- addTask(task) {
- // console.log(`QueueManager======addTask======${task}`);
- this._tasks.unshift(task);
- // console.log(`指令进队列:${task.toString()}, 数量:${this._tasks.length}`);
- }
- listenTask(callback) {
- // console.log(`QueueManager======listenTask======${callback.name || 'anonymous'}`);
- // this._listenMap[callback.name || 'anonymous'] = callback;
- if (!this._timer) {
- this._timer = setInterval(() => {
- if (this._tasks.length === 0) {
- // console.log('QueueManager======execute======list empty');
- return;
- }
- const last = this._tasks.pop();
- if (callback) {
- callback(last);
- }
- // Object.keys(this._listenMap).forEach(key => {
- // const value = this._listenMap[key];
- // if (last.constructor.name === key || key === 'dynamic') {
- // console.log(`QueueManager======listenTask======forEach===callback`);
- // value(last);
- // }
- // });
- // 不管有没有订阅,都移除掉
- }, this._interval);
- }
- }
- clear() {
- // console.log('QueueManager======clear======');
- if (this._tasks.length > 0) {
- this._tasks.length = 0;
- }
- }
- dispose() {
- // console.log('QueueManager======dispose======');
- this.clear();
- if (this._timer) {
- clearInterval(this._timer);
- this._timer = null;
- }
- this._listenMap = {};
- }
- }
- module.exports = QueueManager;
|