javascript event loop

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

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

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

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

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

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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容