es6 中 async await 的使用 (替代generator yield)

async await 和 generator yield 的使用方法和应用场景基本一样,不过 async await 的使用更加简练,不需要再写runner()来异步执行各个部分的代码,官方已经提供,所以注定选择更加简练方便的,使用async await,抛弃generator yield。

async function readData(){		// async ()=>{	//  注:async声明时可以写成箭头函数,但是generator不行。
	let data1 = await $.ajax({url: 'arr.txt', dataType: 'json'});
	let data2 = await $.ajax({url: 'json.txt', dataType: 'json'});
	let data3 = await $.ajax({url: '1.txt', dataType: 'json'});
	
	console.log(data1, data2, data3);
}

readData();

其上面写法完全等价于下面generator写法:(generator中的runner方法需要自己写或者引用别人写好的,但是async不用)

runner(function *readData(){
		let data1 = yield $.ajax({url: 'arr.txt', dataType: 'json'});
		let data2 = yield $.ajax({url: 'json.txt', dataType: 'json'});
		let data3 = yield $.ajax({url: '1.txt', dataType: 'json'});
		
		console.log(data1, data2, data3);
	});
	
	readData();

两者区别:

  1. async不依赖于外部的runner,性能高
  2. async可以使用箭头函数

关于async的详细运行机制,可以参考generator,因为两者完全一样,只不过async更加方便一些,可以参考es6中的generator yield)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值