// 1. Promise如何处理串行请求
let arr = []
var generatePromise = function(){
return function(){
return new Promise((resolve,reject) => {
setTimeout(() => {
console.log('执行')
resolve()
},1000)
})
}
}
for(let i=0;i<5;i++){
arr.push(generatePromise())
}
// 第一种方案
// arr.reduce((cur,prev) => {
// return cur.then(() => prev())
// },Promise.resolve())
// 第二种方案
// ;(async() => {
// for(let fn of arr){
// await fn()
// }
// })()
// 第三种方案,也是第一种方案的变种
// let r = Promise.resolve()
// for(let fn of arr){
// r = r.then(() => fn())
// }
// 第四种方案,递归
function dispatch(i,p = Promise.resolve()){
if(i >= arr.length) return
return p.then(() => {
return dispatch(i+1, arr[i]())
})
}
dispatch(0)
// 第五种方案, generator
console