0
点赞
收藏
分享

微信扫一扫

async和await与promise的区别

什么是什么是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时,不在需要那么多的箭头函数,这样调试就像调试同步代码一样。

举报

相关推荐

0 条评论