异步请求,等待执行。aysnc/await原理
let fun1 = function(){
return new Promise((resolve, reject)=>{
setTimeout(()=>{
console.log('1')
resolve()
}, 1000)
})
}
let fun2 = function(){
return new Promise((resolve, reject)=>{
setTimeout(()=>{
console.log('2')
resolve()
}, 1000)
})
}
let fun3 = function(){
return new Promise((resolve, reject)=>{
setTimeout(()=>{
console.log('3')
resolve()
}, 1000)
})
}
function* generator(eventArray){
for(let i = 0;i < eventArray.length; i++){
yield eventArray[i].call(this)
}
}
let genObj = generator([fun1,fun2,fun3])
function execute(generatorControl){
function nextFun(){
let nextReturn = generatorControl.next()
if(nextReturn.done) return nextReturn.value
// 返回的是promise对象
nextReturn.value.then(nextFun)
}
nextFun()
}
execute(genObj)