什么是什么是async/await?

async/await是写异步代码的新方式,以前的方法有回调函数和promise
async/await是基于promose实现的,他不能用于普通的函数
async/await与promise一样,是非阻塞的
async/await使得异步代码看起来像同步代码

async/await语法

1)使用promise:

const maskRequet = () =>{
	getJSON().then(res=>{
		console.log(res)
	})
}

2)使用async

const maskRequest = async() =>{
  let result = await getJSON()
  console.log(result)
}
区别:

1、函数的前面多了一个aynce关键字。await关键字只能用在aync定义的函数内。async函数会隐士地返回一个promise,该promise的reosolve值就是函数return的值。
2、也就是说await只能在aync函数内使用

为什么使用async/await比较好哪?

1)使用async函数可以使代码简洁很多,不需要像promise一样需要些then,不需要写匿名函数Promise的resolve值,也不需要定义多余的data变量,害避免了嵌套代码。
2)错误处理:async/await让try/catch可以同时处理同步和异步错误。

中间值

比如这样的场景,调用promise1 , 使用promise1的返回结果去调用promise2,然后使用两者的结果去调用promise3

const maskRequest = () =>{
	return promise1().then(res1=>{
		return promise2(res1).then(res2=>{
			return promise3(res1,res2)
		})
	})
}
这样的代码就嵌套的很多了,不易于解读。

使用async/await的话代码就变得异常的简单和直观

const maskRrequest =  async()=>{
	const res1 = await promise1()
	const res2 = await promoise2(res1)
	return await promise( res1 , res2 )
	
}
调试

async/await让代码调试变得简单。2个理由使得promise调试很痛苦

1、promise不能在返回表达式的箭头函数中设置断点
2、如果你在.then代码块中设置断点,进入下一步的话,调试器不会跳到下一个.then,因为他只会跳过异步代码。
3、使用async/await时,不在需要那么多的箭头函数,这样调试就像调试同步代码一样。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐