/**
const pro1 = ()=>{
console.log('pro1')
}
const pro2 = ()=>{
console.log('pro2')
}
const pro3 = ()=>{
console.log('pro3')
}
实现代码的串行执行,得到的输出必须是:
pro1==>pro2==>pro3
*/
const chainFunc = function(pros){
let queue = []
let fns = fn=>{
return new Promise(resolve=>{
setTimeout(()=>{
fn()
resolve()
})
})
}
pros.forEach(pro=>{
queue.push(fns(pro))
})
queue.reduce((pre,cur)=>{
return pre.then(cur)
},Promise.resolve())
}
//测试数据
const pro1 = ()=>{
console.log('pro1')
}
const pro2 = ()=>{
console.log('pro2')
}
const pro3 = ()=>{
console.log('pro3')
}
let pros = [pro1,pro2,pro3]
chainFunc(pros)//pro1 pro2 pro3