Even Loop(事件循环)
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(事件循环)相关推荐
- 为什么JS是单线程?JS中的Event Loop(事件循环)?JS如何实现异步?setimeout?
https://segmentfault.com/a/1190000012806637 https://www.jianshu.com/p/93d756db8c81 首先,请牢记2点: (1) JS是 ...
- node.js中对Event Loop事件循环的理解
javascript是单线程的,所以任务的执行都需要排队,任务分为两种,一种是同步任务,一种是异步任务. 同步任务是进入主线程上排队执行的任务,上一个任务执行完了,下一个任务才会执行. 异步任务是不进 ...
- Event Loop 事件循环简介
1.Event Loop? Event Loop 其实也是在面试中经常会出现的一个题,前端程序员回答不上来是正常的,因为 Event Loop 是 C++ 实现的,实现原理和 JavaScript 没 ...
- Even Loop(事件循环机制)
1.什么是事件循环机制 Event Loop即事件循环,是解决javaScript单线程运行阻塞的一种机制. 2.为什么使用Even Loop 原因:JavaScript 是单线程的.单线程就意味着, ...
- Eevnt Loop (事件循环)
javascript是一门单线程的非阻塞的脚本语言.单线程意味着javascript在执行代码的任何时候,都只有一个主线程来处理所有的任务.非阻塞:是当代码需要进行一项异步任务(无法立刻返回结果,需要 ...
- Event Loop事件循环机制
转载自:阮一峰博客<JavaScript 运行机制详解:再谈Event Loop> 一.为什么JavaScript是单线程? JavaScript语言的一大特点就是单线程,也就是说,同一个 ...
- node mysql 事件循环_NodeJs 的 Event loop 事件循环机制详解
什么是事件轮询 事件循环是 Node.js 处理非阻塞 I/O 操作的机制--尽管 JavaScript 是单线程处理的--当有可能的时候,它们会把操作转移到系统内核中去. 下面的图表显示了事件循环的 ...
- JavaScript event loop事件循环 macrotask与microtask
macrotask 姑且称为宏任务,在很多上下文也被简称为task.例如: setTimeout, setInterval, setImmediate, I/O, UI rendering. mic ...
- 【转载】浏览器事件循环机制(event loop)
首先,本文转自https://juejin.im/post/5afbc62151882542af04112d 当我看完菲利普·罗伯茨的 javascript event loop的演讲的时候,就对于事 ...
- 技术干货 | JavaScript 之事件循环(Event Loop)
导读:学过 JavaScript(下文简称 JS) 的都知道它是一门单线程的.非阻塞的脚本语言.单线程意味着,JS 代码在执行的任何时候,都只有一个主线程来处理所有的任务,这也就意味着 JS 无法进行 ...
最新文章
- c语言将一个已知头结点的单链表逆序_C语言数据结构实现链表逆序并输出
- leecode第八十九题(格雷编码)
- Python多进程multiprocessing共享数据Value(包括常用的整数、字符串)、列表及字典以及Queue
- Spring原理只要看这篇文章就够了
- Android之Camera介绍
- Codeforces Round #716 (Div. 2) D(随机算法)
- Redis解读持久化RDB和AOF原理
- Python中出现 SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 12-13
- PyInstaller 生成exe文件
- Linux 命令(128)—— useradd 命令
- sympy模块解指数方程
- Web前端笔试115道题(带答案及解析)
- android10.0(Q) MTK 系统相机打开 USBCamera
- [大赛推荐]短视频开发大赛,万元现金大奖等你来拿
- JavaEE-Mybatis知识点笔记
- 林肯公园跑步歌单:摇滚助力跑出一道光
- 如何查看国内sci期刊有哪些
- 安卓禁止用户安装程序
- 2019非上海生源高校应届生落户指南
- 【中级软考—软件设计师】2操作系统2.7磁盘管理【**】:2.7.1磁盘管理01
热门文章
- 基于ASP的新闻管理系统的设计与实现
- 英语zhangersong
- mysql 不严谨模式_mysql不严谨模式怎么开启?
- android安装视频,教你如何装主题 Android主题安装教程
- org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:processDebugManifest'
- springboot高校二手服饰交易系统服装商城idea mysql
- 渠道-量水堰 水位流量关系曲线
- Go后台管理系统 | EasyGoAdmin
- 揭示微软鲜为人知的秘密:观止--微软创建NT和未来的夺命狂奔 (Show Stopper!中文版)...
- 2021-03-02