javascript运行机制

进程和线程

  • 进程是系统进行资源分配和调度的一个独立单位是程序的一次执行。

  • 线程是 cpu 调度的最小单位(线程是建立在进程的基础上的一次程序运行单位,一个进程中可以有多个线程)

1、概念

①同步:按顺序执行;

②异步:先执行一部分,等拿到结果(或到时间)再执行后续代码;

{

计时器(setTimeout,setInterval)

ajax

读取文件

dom事件

}

③单线程:一个任务完成后才能执行另一个任务;

2、程序执行顺序

①同步—>②nextTick—>③异步—>④setImmediate

setImmediate(()=>{console.log(1)
});process.nextTick(()=>{console.log(2)
});console.log(3);setTimeout(()=>{console.log(4)
},0);//输出:3241
3、 事件循环

js 引擎执行异步代码而不用等待,是因有为有消息队列和事件循环。

  • 消息队列:消息队列是一个先进先出的队列,它里面存放着各种消息。
  • 事件循环:事件循环是指主线程重复从消息队列中取消息、执行的过程。

(1)所有同步任务都在主线程上执行,形成一个执行栈(execution context stack)。(2)主线程之外,还存在一个"任务队列"(task queue)。只要异步任务有了运行结果,就在"任务队列"之中放置一个事件。(3)一旦"执行栈"中的所有同步任务执行完毕,系统就会读取"任务队列",看看里面有哪些事件。那些对应的异步任务,于是结束等待状态,进入执行栈,开始执行。(4)主线程不断重复上面的第三步。

Even Loop(事件循环)相关推荐

  1. 为什么JS是单线程?JS中的Event Loop(事件循环)?JS如何实现异步?setimeout?

    https://segmentfault.com/a/1190000012806637 https://www.jianshu.com/p/93d756db8c81 首先,请牢记2点: (1) JS是 ...

  2. node.js中对Event Loop事件循环的理解

    javascript是单线程的,所以任务的执行都需要排队,任务分为两种,一种是同步任务,一种是异步任务. 同步任务是进入主线程上排队执行的任务,上一个任务执行完了,下一个任务才会执行. 异步任务是不进 ...

  3. Event Loop 事件循环简介

    1.Event Loop? Event Loop 其实也是在面试中经常会出现的一个题,前端程序员回答不上来是正常的,因为 Event Loop 是 C++ 实现的,实现原理和 JavaScript 没 ...

  4. Even Loop(事件循环机制)

    1.什么是事件循环机制 Event Loop即事件循环,是解决javaScript单线程运行阻塞的一种机制. 2.为什么使用Even Loop 原因:JavaScript 是单线程的.单线程就意味着, ...

  5. Eevnt Loop (事件循环)

    javascript是一门单线程的非阻塞的脚本语言.单线程意味着javascript在执行代码的任何时候,都只有一个主线程来处理所有的任务.非阻塞:是当代码需要进行一项异步任务(无法立刻返回结果,需要 ...

  6. Event Loop事件循环机制

    转载自:阮一峰博客<JavaScript 运行机制详解:再谈Event Loop> 一.为什么JavaScript是单线程? JavaScript语言的一大特点就是单线程,也就是说,同一个 ...

  7. node mysql 事件循环_NodeJs 的 Event loop 事件循环机制详解

    什么是事件轮询 事件循环是 Node.js 处理非阻塞 I/O 操作的机制--尽管 JavaScript 是单线程处理的--当有可能的时候,它们会把操作转移到系统内核中去. 下面的图表显示了事件循环的 ...

  8. JavaScript event loop事件循环 macrotask与microtask

    macrotask  姑且称为宏任务,在很多上下文也被简称为task.例如: setTimeout, setInterval, setImmediate, I/O, UI rendering. mic ...

  9. 【转载】浏览器事件循环机制(event loop)

    首先,本文转自https://juejin.im/post/5afbc62151882542af04112d 当我看完菲利普·罗伯茨的 javascript event loop的演讲的时候,就对于事 ...

  10. 技术干货 | JavaScript 之事件循环(Event Loop)

    导读:学过 JavaScript(下文简称 JS) 的都知道它是一门单线程的.非阻塞的脚本语言.单线程意味着,JS 代码在执行的任何时候,都只有一个主线程来处理所有的任务,这也就意味着 JS 无法进行 ...

最新文章

  1. c语言将一个已知头结点的单链表逆序_C语言数据结构实现链表逆序并输出
  2. leecode第八十九题(格雷编码)
  3. Python多进程multiprocessing共享数据Value(包括常用的整数、字符串)、列表及字典以及Queue
  4. Spring原理只要看这篇文章就够了
  5. Android之Camera介绍
  6. Codeforces Round #716 (Div. 2) D(随机算法)
  7. Redis解读持久化RDB和AOF原理
  8. Python中出现 SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 12-13
  9. PyInstaller 生成exe文件
  10. Linux 命令(128)—— useradd 命令
  11. sympy模块解指数方程
  12. Web前端笔试115道题(带答案及解析)
  13. android10.0(Q) MTK 系统相机打开 USBCamera
  14. [大赛推荐]短视频开发大赛,万元现金大奖等你来拿
  15. JavaEE-Mybatis知识点笔记
  16. 林肯公园跑步歌单:摇滚助力跑出一道光
  17. 如何查看国内sci期刊有哪些
  18. 安卓禁止用户安装程序
  19. 2019非上海生源高校应届生落户指南
  20. 【中级软考—软件设计师】2操作系统2.7磁盘管理【**】:2.7.1磁盘管理01

热门文章

  1. 基于ASP的新闻管理系统的设计与实现
  2. 英语zhangersong
  3. mysql 不严谨模式_mysql不严谨模式怎么开启?
  4. android安装视频,教你如何装主题 Android主题安装教程
  5. org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:processDebugManifest'
  6. springboot高校二手服饰交易系统服装商城idea mysql
  7. 渠道-量水堰 水位流量关系曲线
  8. Go后台管理系统 | EasyGoAdmin
  9. 揭示微软鲜为人知的秘密:观止--微软创建NT和未来的夺命狂奔 (Show Stopper!中文版)...
  10. 2021-03-02