前端异步的一些基本概念

 我来答
机器1718
2022-06-28 · TA获得超过6866个赞
知道小有建树答主
回答量:2805
采纳率:99%
帮助的人:163万
展开全部

settimeout是异步方法,会排到消息队列去执行,也就是执行异步方法的队列称为消息队列。

js主要是多线程执行的,而执行非异步方法的部分称为主线程,消息队列其实也是一个线程,称为副线程,而主线程执行完毕才会执行副线程。

副线程(消息队列)并非只有一个,为了执行效率和顺序分为 宏任务线程 微任务线程 ,只有微任务进程执行完才会执行宏任务进程

其中23456就是事件轮询

Generator函数是协程在 ES6 的实现,最大特点就是可以交出函数的执行权
该函数返回一个状态机,必须要靠状态机.next()才能执行
执行过程只需要记住一句话
执行到yield就暂停,返回yield后面值,第一次执行参数无用,再次执行参数赋给yield前面的表达式。

async、await是Generator函数的语法糖,原理是通过Generator函数加自动执行器来实现的,这就使得async、await跟普通函数一样了,不用再一直next执行了

所以本质上async await是generator与promise结合的语法糖
三者调用请求的对比案例:
promise

generator

async

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式