1,event loop(事件轮询/事件循环)

首先我们要知道 由于js是单线程的脚本,异步事件要基于回调来实现的
而event loop 就是异步回调的实现原理

1,js的执行顺序

  1. 从前到后,一行一行执行
  2. 如果有一行执行报错,就会停止下面代码的执行
  3. 先执行同步代码,后执行异步

举个例子

这上面是一个js执行顺序的小案例


上面是浏览器运行

首先运行第一行代码,显示console.log(‘Hi’),然后清空调用栈。


然后调用函数,函数会进入异步函数队列中

最后执行log代码,然后清空

然后没有同步代码,就会启动event loop 机制,浏览器触发callback


这样执行完了

同步代码,一行一行放在call stack 中执行
遇到异步,会先“记录”下,等待时机(定时、网络请求等)
时机到了,就会移动到callback Queue 库里面
如call stack 为空(即同步代码执行完)event loop 开始工作
轮训查找 callback Queue,如果有就移动到 call stack执行
然后继续轮训查找(和永动机一样)

参考文档
深入理解Javascript之Callstack&EventLoop
浏览器运行机制详解

2,宏任务,微任务

js单线程–事件执行顺序,宏任务与微任务

event loop 事件轮询机制相关推荐

  1. 轮询机制php,JS事件轮询机制讲解

    JS是单线程语言,深入理解JS里的Event Loop,本文主要和大家分享JS事件轮询机制,希望能帮助到大家. JS的执行机制(一): 1.首先判断JS是同步还是异步,同步就进入主进程,异步就进入ev ...

  2. 事件轮询机制和promise(怪异机制?)

    事件轮询机制 任务队列分为 宏任务队列 微任务队列 ​ 当碰上异步代码时,会将异步代码传给web API 由web API 将异步代码放到任务队列中,script整体代码.setTimeout.set ...

  3. Node中的事件轮询机制

    文章目录 2 node中的事件循环模型 2-1 一些属性 2-2 循环模型 node事件循环总共有==六个阶段== process.nextTick()函数 __实例__ 2 node中的事件循环模型 ...

  4. nodejs的事件轮询机制

    /* 面试题:nodejs的事件轮询机制*/setTimeout(function() {console.log('setTimeout()') }, 0)setImmediate(function( ...

  5. JS事件轮询机制(Event Loop)

    概念     事件轮询 (eventloop) 是"一个解决和处理外部事件时将它们转换为回调函数的调用的实体(entity)"     JavaScript 语言的一大特点就是单线 ...

  6. 浏览器的进程,线程,事件轮询机制

    前言:其实网上关于js是单线程的文章很多,但是浏览器的线程,进程很多都没有提到,所以自己也进行了一个总结,将碎片化的知识进行梳理,形成一个知识体系,有问题的地方欢迎大家一起探讨. 首先,简单了解一下进 ...

  7. javascript事件轮询(event loop)详解

    英语原文摘自:http://blog.carbonfive.com/2013/10/27/the-javascript-event-loop-explained/ The JavaScript Eve ...

  8. 事件轮询 Event Loop

    今天在看Node.js的时候接触到了轮询的概念,原来一直不知道,轮询一直存在于JavaScript中,每天都在接触它,然而并不知道,哈哈. 一.概念理解 事件轮询(Event Loop)是一个很重要的 ...

  9. 事件轮询(Event Loop) 宏任务与微任务

    事件轮询(Event Loop) 宏任务与微任务 文章目录 事件轮询(Event Loop) 宏任务与微任务 前言 Javascript诞生 Javascript如何执行 Event Loop是什么? ...

最新文章

  1. Spring的Bean生命周期,11 张高清流程图及代码,深度解析
  2. java不能修改表_java中不可修改列表的类型是什么
  3. python能做哪些单机游戏好玩_【单机游戏】可以快速用Python进行数据分析的几个小技巧_玩得好游戏攻略...
  4. 权限申请_Android 开发工程师必须掌握的动态权限申请,三步轻松搞定!
  5. js / php 网站底部版权文字自动改变年份
  6. Java中矩阵运算(math3的使用)
  7. webpack gulp grunt 简单介绍
  8. Progress lifecycle
  9. 开源框架_跨平台开源框架对比介绍
  10. c语言5-34答案,C语言答案第5章.doc
  11. sscanf %*s
  12. 【PCBA方案】咖啡电子秤芯片方案介绍
  13. android脚本,安卓好用的脚本程序—Gscript
  14. 一文读懂汽车功能安全
  15. Python绘图实例35:漫天雪花绘制
  16. 2018级《程序设计基础(B)I》期末上机考试 重现(第二场)
  17. 相濡以沫还是想忘于江湖
  18. LeetCode:167. 两数之和 II - 输入有序数组(java)
  19. 腾讯资深产品经理谈敏捷开发于游戏
  20. Audio Delay

热门文章

  1. HTML5制作信息登记表
  2. 仿知乎日报android
  3. 侯捷C++个人学习笔记面向对象Part2
  4. Dojo:不容忽视的RIA框架
  5. 低代码平台对于开发者来说可以解决哪些问题?
  6. 化妆品店有哪些好用的活动方案?
  7. java中动态输入_根据特定输入动态生成字符串的代码 - java
  8. 手头有70万,想在广州买房,买南沙好还是黄埔好?
  9. css设置字符间距后无法完全居中问题
  10. 易优CMS蓝色平面设计广告印刷网站模板源码+带手机版