前端异步的一些基本概念
1个回答
展开全部
settimeout是异步方法,会排到消息队列去执行,也就是执行异步方法的队列称为消息队列。
js主要是多线程执行的,而执行非异步方法的部分称为主线程,消息队列其实也是一个线程,称为副线程,而主线程执行完毕才会执行副线程。
副线程(消息队列)并非只有一个,为了执行效率和顺序分为 宏任务线程 与 微任务线程 ,只有微任务进程执行完才会执行宏任务进程
其中23456就是事件轮询
Generator函数是协程在 ES6 的实现,最大特点就是可以交出函数的执行权
该函数返回一个状态机,必须要靠状态机.next()才能执行
执行过程只需要记住一句话
执行到yield就暂停,返回yield后面值,第一次执行参数无用,再次执行参数赋给yield前面的表达式。
async、await是Generator函数的语法糖,原理是通过Generator函数加自动执行器来实现的,这就使得async、await跟普通函数一样了,不用再一直next执行了
所以本质上async await是generator与promise结合的语法糖
三者调用请求的对比案例:
promise
generator
async
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询