ES2017——async、await

ES2017中引入async函数,据某实际工作人员透露,目前公司相比于promise,更常用async处理异步操作,所以async函数的学习还是很有必要的,以下只是简易版,后期结合实际项目详细介绍async的用法

es2017标准引入了async函数,是的异步操作变得更加方便;
async和await语法结合可以使异步代码像同步代码一样

  1. async 函数的返回值为 promise 对象,
  2. promise 对象的结果由 async 函数执行的返回值决定
  3. await 必须写在 async 函数中
  4. await 右侧的表达式一般为 promise 对象
  5. await 返回的是 promise 成功的值
  6. await 的 promise 失败了, 就会抛出异常, 需要通过 try…catch 捕获处理

例如,读取文件的操作:

function get(){
	return new Promise((resolve,reject) =>{
		fs.readFile("./summer的csdn文章.md",(err,data)=>{
			if(err) reject(err);
			resolve(data);
		})
	}
}
async function res(){
	let result = await get();
	console.log(result.toString());//输出文章内容
}

可以看出,async和await结合使用,可以使读取文件操作变得十分简洁,多个文件读取,我们还可以封装一个专门读取文件的函数,这样二者结合的简便性更突出了。

同样,我们可以尝试使用async和await结合封装ajax请求:

function getAjaxData(url){
	return new Promise((resolve,reject)=>{
	//创建ajax对象
	var xhr = new XMLHttpRequest();
	//初始化ajax对象
	xhr.open("GET",url);
	//发送请求
	xhr.send();
	//事件绑定
	xhr.onreadystateChange = function(){
		if(xhr.readystate === 4){
			if(xhr.status >= 200 && xhr.status < 300){
				resolve(xhr.respose);
			}else{
				reject(xhr.status);
			}
		}
	}
	}
}
//测试封装(这是一个笑话接口)
getAjaxData("https://api.gugudata.com/news/joke/demo");

下图是接口返回的数据
在这里插入图片描述
async用法远不止如此,后期详细介绍,同步、异步是一个重点和难点,后期会出专栏。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

summer·

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值