console
var promise1 = () => new Promise((resolve, reject) => {
return setTimeout(function(){resolve('promise1')},3000)
})
var promise2 = () => new Promise((resolve, reject) => {
return setTimeout(function(){resolve('promise2')},3000)
})
function* gen(){
const data1 = yield promise1()
console.log(data1)
const data2 = yield promise2()
console.log(data2)
}
function newAsync(func){
return function(){
const gen = func.apply(this,arguments)
return new Promise((resolve, reject) => {
function step(next, arg){
const result = gen[next](arg)
const { value,done } = result
if(done){
return resolve(value)
} else {
return Promise.resolve(value).then(val => step('next', val))
}
}
step('next')
})
}
}
var a = newAsync(gen)
async await 手写实现