JS运行机制

JS单线程
任务队列
Event Loop
https://juejin.im/post/594156e6fe88c2006a4e5235

console.log('1');//同步任务优先
setTimeout(function(){//异步任务
  console.log('2')
},0)
//1,2

JS是单线程的(在同一时间只能做一件事)

任务队列:
同步任务(优先)
异步任务(挂起)

console.log('A');//同步任务
while(true){//不停循环 
}
console.log('B');//执行不到
//A
console.log('A');
setTimeout(function(){
  console.log('B')
},0)
while(1){
}
//A
for(var i = 0; i  <  4; i++){
  setTimeout(function(){//异步队列
  console.log(i)
},1000);
}
//4444
for循环在执行过程中,遇到setTimeout定时器,到时间才把i到异步队列

异步任务的放入和执行时间不同。

异步任务分两类:
macro-task:又叫task queue,宏任务
包括:
script(整体代码),setTimeout,setInterval,setImmediate,I/O,UI rendering.
micro-task:微任务
包括:
process.nextTick,Promise(这里指浏览器实现的原生Promise),object.observe,MutationObserver
注:全部代码(script)算是macrotask

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 并发模型 常见的并发模型是并行工作者模型,任务分配给多个工作者,每个工作者完成整个任务,常说的 C 语言的多线程就...
    喵不留行阅读 5,130评论 1 8
  • 弄懂js异步 讲异步之前,我们必须掌握一个基础知识-event-loop。 我们知道JavaScript的一大特点...
    DCbryant阅读 7,671评论 0 5
  • js最大的特点就是单线程,也就是说同一时间只能做一件事。原因在于js主要用途是与用户互动,操作DOM。假如是多线程...
    晴天小猪L阅读 1,621评论 0 0
  • 一、js单线程1.单线程的含义是js只能在一个线程上运行,也就说,js同时只能执行一个js任务,其它的任务则会排队...
    wuxuan94阅读 1,535评论 0 0
  • 新买的苹果手机壳怕摔、怕磨,因此人们纷纷给她“戴”上“套”。殊不知,这样虽然保护了手机,却伤害了自己。有些手机壳虽...
    揽州宿莽阅读 10,089评论 0 1

友情链接更多精彩内容