同步Promise队列

# 同步Promise队列

我们可以使用promise得每次在return得时候都会返回一个promise.resolve得特性,让它实现这个功能 很简单,看代码


    let promise3 = new Promise((resolve)=>{
      setTimeout(() => {
        resolve(3)
      }, 0);
    })
    let promise2 = new Promise((resolve)=>{
      setTimeout(() => {
        resolve(2)
      }, 2000);
    })
    let promise1 = new Promise((resolve)=>{
      setTimeout(() => {
        resolve(1)
      }, 1500);
    })
    class PromiseQueue {
      constructor(){
        this.promiseList = []
      }
      add(promise){
        this.promiseList.push(promise)
        return this
      }
      run(){
        const promiseList =  this.promiseList 
        promiseList.reduce((prev,next)=>{
         return  prev.then(()=>next.then((res)=>console.log(res)))
        },Promise.resolve())
      }
    }
    let queue = new PromiseQueue();
    queue.add(promise1).add(promise2).add(promise3).run()
上次更新: 1 小时前