事件的循环

 js是一门异步单线程的语言

        自上而下执行,遇到报错停止

        同步和异步

        异步任务:

            setTimeout

            setInterval

            ajax

            dom操作

            script

            promise

            async await

        js内又将异步任务划分为 宏任务 和 微任务 是js异步任务的划分  先走的宏任务,在同一个宏任务范围内 有宏任务和微任务,先走微任务

            宏任务

                setTimeout

                setInterval

                ajax

                dom操作

                script

            微任务

                promise

                async await

### 事件循环的原理 事件循环是一个无限循环,不断从事件队列中取出事件,并将这些事件分发给相应的对象进行处理。在不同环境中,事件循环的具体原理有所不同。 在浏览器环境中,事件循环运行在浏览器渲染主线程,该主线程负责处理 JavaScript 代码的执行、DOM 的更新、样式的计算以及页面的渲染等任务。浏览器进程中的渲染进程内部结构复杂,主线程需协同网络线程、解析线程等共同处理网页的加载、解析、渲染以及响应各种用户事件[^4]。 在 Node.js 环境中,它是基于事件驱动的异步 I/O 框架,利用事件循环机制来处理非阻塞的 I/O 操作。Node.js 的单线程模型通过事件循环高效处理大量并发请求[^3]。 ### 事件循环的机制 - **浏览器事件循环机制**:当一个事件发生时,它不仅会触发直接的目标元素的事件处理程序,还会向上冒泡,触发其父元素的相应事件处理程序。开发者可以通过设置 `event.stopPropagation()` 来阻止事件冒泡。JavaScript 代码中的任务分为同步任务和异步任务,异步任务又分为宏任务和微任务。事件循环会先执行同步任务,同步任务执行完后,会检查微任务队列,将微任务队列中的任务依次执行完,再从宏任务队列中取出一个宏任务执行,执行完后再检查微任务队列,如此循环[^2]。 以下是一个简单的浏览器事件循环示例: ```javascript console.log('同步任务1'); setTimeout(() => { console.log('宏任务'); }, 0); Promise.resolve().then(() => { console.log('微任务'); }); console.log('同步任务2'); ``` - **Node.js 事件循环机制**:Node.js 的事件循环有多个阶段,包括定时器阶段(Timers)、I/O 回调阶段(I/O callbacks)、闲置阶段(Idle, prepare)、轮询阶段(Poll)、检查阶段(Check)、关闭回调阶段(Close callbacks)。事件循环会依次经过这些阶段,处理不同类型的任务。 ### 事件循环的应用 - **浏览器应用**:事件循环确保了浏览器应用程序能够及时响应各种事件,保持界面的交互性和响应性。例如,用户点击按钮、滚动页面等操作都会触发相应的事件,通过事件循环可以及时处理这些事件,更新页面显示。 - **Node.js 应用**:在开发高性能的 Node.js 应用时,理解事件循环的工作原理至关重要。Node.js 利用事件循环处理大量的并发请求,实现高效的非阻塞 I/O 操作,常用于构建服务器端应用,如 Web 服务器、实时通信应用等。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值