promise 的串行执行

function pri (num) {
  return new Promise((resolve,reject) => {
    console.log('开始'+num)
    resolve(num)
  })
}
const list = [1,2,3]


function done(list,cb){
  list.reduce((s,v) => {
    return s.then(res => {
      console.log(res)
      if (res) {
        return cb(v+res)
      }else{
        return cb(v)
      }
      
    })
  },Promise.resolve())
}

done(list,pri)


let p = Promise.resolve()
for (const i of list) {
  p = p.then(() => pri(i))
}
原文地址:https://www.cnblogs.com/buxiugangzi/p/13044731.html