function sleep(wait){
return new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve(`我是${wait}执行后的结果`)
},wait)
})
}
function c(){
let ret = co(function* (){
let result = yield sleep(1000)
console.log("one")
let result2 = yield sleep(2000)
console.log("two")
let result3 = yield sleep(3000)
console.log("three")
})
return ret
}
function co(genFn){
return new Promise((resolve,reject)=>{
let gen = genFn()
let num = 0
function step(key,arg){
let info = {}
try {
info = gen[key](arg)
}catch(error){
reject(error)
}
if(info.done){
console.log(num++)
resolve(info.value)
}else {
return Promise.resolve((info.value)).then(v=>{
console.log(num++)
return step('next',v)
}).catch((error)=>{
return step('throw',error)
})
}
}
step('next')
})
}
async function dd(){
console.log("a")
let result = await 1
console.log(result)
let result2 = await 2
console.log(result2)
let result3 = await 3
console.log(result3)
}
console.log("script start")
dd()
Promise.resolve().then(()=>{
console.log(123)
Promise.resolve().then(()=>{
console.log(2222)
})
})
console.log("script end")
console