PromiseQueue.js 892 B

1234567891011121314151617181920212223242526272829303132
  1. export class PromiseQueue {
  2. constructor() {
  3. this.queue = [];
  4. /**
  5. * 返回一个 promise 用于等待
  6. */
  7. this.push = () => {
  8. return new Promise((resolve, reject) => {
  9. this.queue.push({ resolve, reject });
  10. });
  11. };
  12. this.unshift = () => {
  13. return new Promise((resolve, reject) => {
  14. this.queue.unshift({ resolve, reject });
  15. });
  16. };
  17. /**
  18. * 清空队列, 正常结束
  19. */
  20. this.flushResolve = (value) => {
  21. this.queue.forEach((item) => item.resolve(value));
  22. this.queue = [];
  23. };
  24. /**
  25. * 清空队列, 移除结束
  26. */
  27. this.flushReject = (error) => {
  28. this.queue.forEach((item) => item.reject(error));
  29. this.queue = [];
  30. };
  31. }
  32. }