美文网首页
javascript event loop

javascript event loop

作者: 放风筝的小小马 | 来源:发表于2018-09-08 21:38 被阅读8次

JavaScript是单线程的,也就是在同一个事件内,只能做一件事;

JavaScript任务被分为: 同步任务异步任务

js引擎中存在有:主线程和任务队列;

js引擎解析代码时,会将所有的同步代码加入到主线程中依次执行,当碰到一个异步任务时,例如ajax,js引擎发送完ajax请求后,并不会等待响应,而是继续执行主线程上的代码,当收到发送ajax请求的响应后,js引擎会在任务队列中添加该事件, 并且将响应结果及相应的回调加入任务队列中,当主线程上的同步任务都执行完成后,js引擎会到任务队列中取出排在第一位的事件,并将其回调函数添加到主线程中执行,按照这个步骤依次执行下去;

js的任务分为 macro task(宏任务)和 micro task(微任务)

setTimeout()setInterval() 属于宏任务
Promise属于微任务

微任务的优先级要高于宏任务,js引擎会先从取出微任务,然后再去宏任务中查找

相关文章

网友评论

      本文标题:javascript event loop

      本文链接:https://www.haomeiwen.com/subject/pcwuiftx.html