首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js的event loop

Js的Event Loop js单线程 ​ 总所周知,JavaScript是单线程的,也就是说同一时间只能做一件事,那为什么JavaScript不能是多线程的呢,这跟它的用途有关,作为浏览器脚本语言...因此为了避免这种问题,js必须是一门单线程的语言! 任务队列 ​ 所有任务可以分成两种,一种是同步任务(synchronous),另一种是异步任务(asynchronous)。...等待执行栈和微任务队列都执行完毕才会执行,并且在执行完每一个宏任务之后,会去看看微任务队列有没有新添加的任务,如果有,会先将微任务队列中的任务清空,才会继续执行下一个宏任务 为了更好地理解Event Loop...,请看下图(转引自Philip Roberts的演讲《Help, I'm stuck in an event-loop》) 案例 案例1 console.log(111); setTimeout(function...需要注意的是,立即resolve()的 Promise 对象,是在本轮“事件循环”(event loop)的结束时执行,而不是在下一轮“事件循环”的开始时。

91720
您找到你想要的搜索结果了吗?
是的
没有找到

Event Loop(node.js)

image.png 多线程并行工作模式图 而 Node.js 用的并发模型是事件驱动模型,工作者对出现的事件做出反应,自身也能产生事件,它的工作模式如下图。...所以 Node.js 的执行可以简单地分成两个阶段: 初始化代码执行 事件循环 初始化代码执行里,执行所有的同步操作代码。所谓同步操作,就是永远一步步执行、没有结果不继续执行后面代码的操作。...而回调函数就是执行顺序不是按声明顺序来执行而是要经过 Node.js 的事件循环来安排执行的用户代码。...Node.js 异步操作的执行 我们知道 Node.js 的所有异步操作都是由 Libuv 来负责的。...下图列出了一些异步操作一般由谁来执行:(图来自:Morning Keynote- Everything You Need to Know About Node.js Event Loop - Bert

77920

js Event Loop 运行机制

Event Loop,事件环,线程进程。这些概念对初识前端的同学来说可能会一头雾水。而且运行js代码的运行环境除了浏览器还有node。因此不同环境处理Event Loop又变得不同,十分容易混淆。...浏览器中的进程和线程和Event Loop 浏览器的进程 从打开浏览器开始,打开浏览器,我们首先看到的是,用户界面,这里有搜索框,显示区,还有收藏夹等等。这些会分配一个进程。...js渲染引擎的Event Loop 以上线程,每个拿出来都可以详细的说上一篇。Event Loop涉及到的JS引擎的一些运行机制的分析。...js渲染引擎的Event Loop如下图 ?...node下Event Loop 事件环的整体还是不变的,执行栈,消息队列,api。不同的是,node下的消息队列有所不同 ?

1.6K40

Event LoopJS 引擎、渲染引擎的关系

本文会讲 JS 引擎的编译流水线、渲染引擎的渲染流程,然后引入为什么需要 event loop。...宿主环境 JS 引擎并不提供 event loop(可能很多同学以为 event loopJS 引擎提供的,其实不是),它是宿主环境为了集合渲染和 JS 执行,也为了处理 JS 执行时的高优先级任务而设计的机制...io 跨端引擎也是调度渲染和 JS 执行 这里我们只关心浏览器里面的 event loop。...浏览器的 event loop check 浏览器里面执行一个 JS 任务就是一个 event loop,每个 loop 结束会检查下是否需要渲染,是否需要处理 worker 的消息,通过这种每次 loop...这样,event loop 貌似就挺完美的了,每次都会检查是否要渲染,也能更快的处理 JS 的“急事”。

2.4K20

Node.js Event Loop 处理的几大周期介绍

Node.js Event Loop 处理的几大周期如下图所示: Timer:通过 setTimeout() 或 setInterval() 安排的一切都将在这里处理。...由于 Node.js 中的所有用户态代码基本上都在回调中(例如,对传入 http 请求的回调会触发级联回调),这就是用户态代码。 IO轮询:轮询下一次运行要处理的新事件。...Event Loop Latency 事件循环延迟衡量在使用 setTimeout(X) 安排的任务真正得到处理之前还需要多长时间。 高事件循环延迟表示事件循环忙于处理回调。...Node.js 应用程序在单个线程上运行。 在多核机器上,这意味着负载不会分布在所有内核上。 使用 Node 附带的集群模块,可以很容易地为每个 CPU 生成一个子进程。

76250

Js 的事件循环(Event Loop)机制以及实例讲解

前言 大家都知道js是单线程的脚本语言,在同一时间,只能做同一件事,为了协调事件、用户交互、脚本、UI渲染和网络处理等行为,防止主线程阻塞,Event Loop方案应运而生… 公众号里面的文章不能添加外部链接...个人博客了解一下:obkoro1.com ---- 为什么js是单线程? js作为主要运行在浏览器的脚本语言,js主要用途之一是操作DOM。...环境) 微任务(microtask): Promise、 MutaionObserver、process.nextTick(Node.js环境) Event Loop(事件循环): Event Loop...以上2018.6.16 参考资料: 详解JavaScript中的Event Loop(事件循环)机制 JavaScript中的事件循环 Event Loop JavaScript 运行机制详解:再谈Event...Loop

1.6K10

Event Loop(1)

在浏览器环境中,打开一个tab就是创建一个进程,一个进程中可以有多个线程,比如渲染引擎、JS引擎线程、HTTP请求线程等等。...当JS运行的时候可能会阻止UI渲染,这说明了两个线程是互斥的。这其中的原因是因为JS可以修改DOM,如果在JS执行的时候UI线程还在工作,就可能导致不能安全的渲染UI。...1 浏览器中的Event Loop ---- 当我们执行JS代码时其实就是往执行栈中放入函数,遇到异步函数会被挂起并在需要执行的时候加入到Task队列中。...一旦执行栈为空,Event Loop就会在Task队列中拿出需要执行的代码并放入到执行栈中执行。 ? 不同的任务源会被分配到不同的Task队列中,任务源可以分为微任务和宏任务。

66110
领券