eventLoop

理解事件循环:

javeScript是单线程语言,js要在宿主环境下执行,浏览器内部有v8 nodejs 有libuv  浏览器里面有各种异步的事件,各种任务,所以需要在任务队列中排队,浏览器的主线程丛任务队列中取出任务依次执行

最新理解

1.浏览器主线程是一个无限循环 

2.每次循环会一个一个执行消息队列中的任务,

3.其他所有线程(包括其他进程的线程)可以随时像消息队列中追加任务 

整个过程称之为事件循环  消息循环  具体细节为

怎么理解js异步

js是单线程语言是因为它运行在浏览器的渲染主线程,渲染主线程只有一个

渲染线程里面有很多工作 渲染界面 、执行js

如果采用同步的方式会导致主线程产生阻塞,导致消息队列中的任务无法执行

浏览器采用异步的方式,比如遇到计时器、网络、事件监听、主线程会把这些任务交给其他线程去处理,接着执行后面的代码,当有线程完成任务时,会把事先传递的回调函数包装成任务加入到消息队列的末尾,等待主线程执行,这种机制使浏览器永不阻塞

例子:遇到渲染,会把渲染任务放到消息队列,接着执行后续代码,遇到循环同步任务,会等待执行完,把消息队列中的任务放到主线程执行,所以产生了延迟渲染

 

任务没有优先级,但是消息队列有,至少包含的队列 延迟队列(中)、交互队列(高)、微队列(最高)

posted @ 2019-07-25 14:28  国服第一李师师  阅读(120)  评论(0)    收藏  举报