1234567891011121314151617181920212223242526272829303132333435363738394041 |
- function Queue() {
- let waitingQueue = this.waitingQueue = [];
- let isRunning = this.isRunning = false;
- function execute(task, resolve, reject) {
- task()
- .then((data) => {
- resolve(data);
- })
- .catch((e) => {
- reject(e);
- })
- .finally(() => {
-
- if (waitingQueue.length) {
- const next = waitingQueue.shift();
- execute(next.task, next.resolve, next.reject);
- } else {
- isRunning = false;
- }
- });
- }
- this.exec = function(task) {
- return new Promise((resolve, reject) => {
- if (isRunning) {
- waitingQueue.push({
- task,
- resolve,
- reject
- });
- } else {
- isRunning = true;
- execute(task, resolve, reject);
- }
- });
- }
- }
- export const queueDraw = new Queue();
- export const queueLoadImage = new Queue();
|