串行promise队列

186 阅读1分钟
  function queue(cbs = []) {
      let res = Promise.resolve()
      cbs.forEach(n => {
        res = res.then(n)
      })
    }
    
    
     const api = (n) => new Promise((res, rej) => {
      setTimeout(() => {
        console.log(n);
        res(n)
      }, n);
    })
    queue([() => api(1000),n=>n+1000, n => api(n + 1000), n => api(n + 1000)])