模拟实现async
async是基于generator的
真实使用
async function fn(args) { ... }
// 可以以下来模拟
const asyncFn = wrap(fn)
asyncFn(args) 简版实现
const wrap = (genFn) =>{
return (...args) => new Promise((resolve, reject) => {
const g = genFn(...args)
function step(data){
const res = g.next(data)
if(!res.done){
Promise.resolve(res.value).then(step)
}else{
resolve(res.value)
}
}
step()
})
}完整实现
最后更新于
这有帮助吗?