利用generator,迭代器 实现async await 方法
function *generator(){
try{
const a = yield new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve(2)
},1*1000)
})
console.log(a)
const b = yield new Promise((resolve,reject)=>{
setTimeout(()=>{
reject(a+1)
},a*1000)
})
console.log(b)
const c = yield new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve(b+1)
},b*1000)
})
console.log(c)
}catch(err){
console.log(err)
}
}
function asyncFunc(func){
const p = func();
return new Promise(function (resolve,reject){
function start(res){
const { value, done } = p.next(res);
if(done){
resolve(value)
}else{
Promise.resolve(value).then((res)=>{
start(res)
},(err)=>{
reject(err);
p.throw(err);
})
}
}
start();
})
}