function delay(time =1000){
return new Promise(resolve=>{
setTimeout(()=>{
resolve()
},time)
})
}
(async()=>{
try{
await delay(3000)
await delay(3000)
await delay(3000)
}catch(er){
}
})()
// 生产器函数
function delay(time =1000){
return new Promise(resolve=>{
setTimeout(()=>{
resolve(`#${time}`)
},time)
})
}
function *waits(){
let value= yield delay(1000)
value = yield delay(2000)
value =yield delay(3000)
}
let gen = waits()
let {value,done} = gen.next()
value.then(x=>{
console.log(x)
let {value} = gen.next(x)
value.then(x=>{
...
})
})
// 编写方法 让生成器逐一执行
function *waits(){
let value= yield delay(1000)
value = yield delay(2000)
value =yield delay(3000)
}
function asyncF(){
let gen = waits()
const next = x =>{
let {done,value} = gen.next()
if(done) return
if(!value instanceof Promise){
value = Promise.resolve(value)
}
value.then(x=> next(x))
}
next()
}
asyncF()
// 升级版
function *waits(){
let value= yield delay(1000)
value = yield delay(2000)
value =yield delay(3000)
}
function asyncF(gener,...params){
let gen = gener(params) //
const next = x =>{
let {done,value} = gen.next()
if(done) return
if(!value instanceof Promise){
value = Promise.resolve(value)
}
value.then(x=> next(x))
}
next()
}
asyncF(waits)//