[工程架构思考-请求]写一个简单请求队列

44 阅读1分钟
 class RequestQueue {
     constructor({
         queue,
         request,
         finishCallback,
     }) {
         this.queue = queue
         this.finishCB = finishCB
     }

     finish() {
        typeof this.finishCallback === function && this.finishCallback()
     }

     checkFinish() {
        return this.queue.length === 0
     }

     push() {

     }

     shift() {
         return this.queue.shift()
     }

     start() {
         if (this.checkFinish()) {
             this.finish()


         }

         let request = this.shift()
         typeof request ===  'function' && request().then(() => {
             console.log('start then')
             this.start()

         }).catch(err => {
             console.log('err', err)
         })
     }
 }

 function handleRequest(payload) {
     return new Promise((resolve, reject) => {
         setTimeout(() => {
             console.log('request ', payload, 'success')
             // this.$message.success('成功')
             resolve()
         }, 1)
     })
 }

 new RequestQueue({
     queue: [1, 2, 3, 4, 5, 6].map(payload => () => handleRequest(payload))
 }).start()