查看“Event Loop:事件循环”的源代码
←
Event Loop:事件循环
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[category:JavaScript]] == 关于 == 在 MDN 上看到 JavaScript 的[https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/EventLoop 《并发模型与事件循环》]一节,但由于该页面内容过少,实在不变学习。 而网络上搜到的内容大同小异,互相又有不小出入,难以拿捏。 众所周知,JavaScript 是没有所谓源代码的“源代码”,所以这部分内容只能在“规范”文件<ref name="HTML-Standard">参见:[https://html.spec.whatwg.org/multipage/webappapis.html#event-loops 《HTML Standard》的“Event loops”一节]</ref>了。 * * 以下内容参照《HTML Standard》、MDN、与网络内容整理。 == 前置知识 == 见:<big>'''[[浏览器基础:进程与线程]]'''</big> “一个 Tab 页面对应一个'''渲染进程'''”,而“渲染进程中只能存在一个 '''JS 引擎线程'''”,即:页面中的所有 JS 都由同一单线程运行。 ??????由于“渲染进程”负责了页面几乎所有的任务(事件、交互、脚本、渲染、网络),所以如何协调各个任务的执行是关键问题。 === JavaScript的“任务” === JavaScript中,“任务”被分为两种:“同步任务”,“异步任务”。 “异步任务”(Task):又分为“宏任务”(MacroTask)与“微任务”(MicroTask)。 # '''宏任务(macrotask)''': # '''微任务(microtask)''': === JavaScript的“运行时” === 与 Java 的运行时概念类似,JavaScript 也有其运行时。 == Event Loop == 要协调事件、用户交互、脚本、渲染、网络等,用户代理必须使用本节中描述的事件循环。每个代理都有一个关联的事件循环,该循环对该代理是唯一的。 当宏任务和微任务都处于 任务队列(Task Queue) 中时,微任务的优先级大于宏任务,即先将微任务执行完,再执行宏任务; 这是理解上优点小偏差 == 补充内容 == === 如何使用“微任务”(microtask)? === === 如何实现无延迟的 setTimeout? === == 参考 == <references/>
返回至“
Event Loop:事件循环
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
笔记
服务器
数据库
后端
前端
工具
《To do list》
日常
阅读
电影
摄影
其他
Software
Windows
WIKIOE
所有分类
所有页面
侧边栏
站点日志
工具
链入页面
相关更改
特殊页面
页面信息