实现一个简单的js队列

实现一个简单的js队列

    class Queue {
      constructor() {
        this.isPadding = false;
        this.queueList = [];
      }
      push(fn) {
        this.queueList.push(fn);
        this.run()
      }
      size() {
        return this.queueList.length;
      }

      run() {
        const vm = this;
        if (!this.size() || this.isPadding) { // 当前队列为空,或者当前有异步还未执行完成
          return
        }
        this.isPadding = true;
        const item = this.queueList.shift();
        item(function done() {
          vm.isPadding = false;
          vm.run()
        })
      }
    }

    const request = new Queue();
    request.push(function (done) {
      setTimeout(() => {
        console.log('异步1')
        done()
      }, 2000)
    })

    request.push(function (done) {
      setTimeout(() => {
        console.log('异步2')
        done()
      }, 2000)
    })

你可能感兴趣的:(实现一个简单的js队列)