Promise 与 async & await 的区分同步与异步任务

由于JavaScript负责解释执行的主线程是单线程的,所以如果遇到耗时比较大的任务则会导致后面的任务阻塞。所以将任务分为了异步任务和同步任务,异步任务又被分为宏任务和微任务。异步任务可以解决阻塞的问题但也会带来执行的不确定性。异步任务也叫异步编程最开始时使用的回调函数进行处理,但如果异步任务进行多层嵌套则会导致回掉地狱,不直观强耦合,回调的不确定性且不利于维护和复用,后续则出现了Promise解决回调地狱采用链式调用,并采用then方法保证了执行的顺序,且Promise也能保证每次返回的都是一个新的Promise;但这种方式还是不够简明—如果执行then方式链式调用太多则会造成代码的语义不够明确,所以出现了async & await的方式将异步任务写的像同步任务更加直观,async中可以有多个异步任务,async中一旦遇到异步任务则会抛出一个pending状态的Promise,并且暂时返回代码的执行权,使得函数外的代码得以继续执行,这是解决非阻塞的方式。等待异步任务执行resolve了或者reject了之后才会接着执行async函数内剩下的部分,保证了顺序的执行。
注意📢:我们所说的将异步任务写的像同步任务指的是async内部的函数像同步函数一样执行,而不是它会阻塞主线程一直等待异步任务完成。主要区分async函数内阻塞,而函数外不阻塞

👌🏻今天就学到这里了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值