async await

依赖es6关键字: yield

  • yield: 关键字用来暂停和继续一个生成器函数。
  • yield 关键字使生成器函数暂停执行,并返回跟在它后面的表达式的当前值。与return类似,但是可以使用next方法让生成器函数继续执行函数yield后面内容,直到遇到yield暂停或return返回或函数执行结束。

async:包装成函数并且自执行
async function test (){} => myAsync( function test()={})

 简单版本
function myAsync(generatorFunc){
	return function (){
		const gen = generatorFunc.apply(this,argument); 
		funciton step(key,value){
		  const { value ,done } = gen[key]();
		  if(done){
		  	 return value
		  }else{
		     step('next',value)
		   }
		  
		}
		step('next')
	}

}
  完善版本
  function myAsync(generatorFunc){
	return function (){
		const gen = generatorFunc.apply(this,argument); 

		return new Promise((resolve,reject)=>{
			funciton step(key,value){
			  const { value ,done } = gen[key]();
			  if(done){
			  	 return resolve(value) 
			  }else{
			  	return   Promise.resolve(value).then((value)=>step('next',value)).catch((err)=>step('throw',err))
			     
			   }
			  
			}
			step('next')

		})

	}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值