html5 网站源码怎样用php做网站

张小明 2025/12/30 7:09:17
html5 网站源码,怎样用php做网站,广州网站建设天维,wordpress xydown第一部分#xff1a;基础概念 1. JavaScript 执行环境 JavaScript 是单线程的#xff0c;这意味着它一次只能执行一个任务。为了处理异步操作#xff0c;JavaScript 使用事件循环机制。 2. 核心组件 调用栈#xff08;Call Stack#xff09; #xff1a;执行同步代码的地…第一部分基础概念1. JavaScript 执行环境JavaScript 是单线程的这意味着它一次只能执行一个任务。为了处理异步操作JavaScript 使用事件循环机制。2. 核心组件调用栈Call Stack执行同步代码的地方任务队列Task Queue分为宏任务队列和微任务队列事件循环Event Loop协调调用栈和任务队列的机制第二部分举例详细解析console.log(1. 同步任务开始);setTimeout((){console.log(2. setTimeout 回调);},0);Promise.resolve().then((){console.log(3. Promise.then 回调);});console.log(4. 同步任务结束);执行步骤分析第1步同步任务执行console.log(1. 同步任务开始)压入调用栈立即执行输出1setTimeout压入调用栈Web API 开始计时0ms回调函数放入宏任务队列Promise.resolve().then()压入调用栈.then()的回调函数放入微任务队列console.log(4. 同步任务结束)压入调用栈立即执行输出4此时状态调用栈空微任务队列[Promise.then回调]宏任务队列[setTimeout回调]第2步事件循环检查调用栈为空事件循环开始工作优先检查微任务队列发现有一个任务执行微任务console.log(3. Promise.then 回调)输出3微任务队列清空第3步继续事件循环微任务队列为空现在检查宏任务队列执行宏任务setTimeout回调输出2宏任务队列清空最终输出顺序1 4 3 2console.log(script start)asyncfunctionasync1(){awaitasync2()console.log(async1 end)}asyncfunctionasync2(){console.log(async2 end)}async1()setTimeout(function(){console.log(setTimeout)},0)newPromise(resolve{console.log(Promise)resolve()}).then(function(){console.log(Promise1)})关键概念async/awaitasync函数总是返回一个 Promiseawait会暂停 async 函数的执行直到 Promise 解决await后面的代码相当于放在.then()中属于微任务执行步骤分析第1步同步任务执行console.log(script start)→ 输出script start定义函数async1和async2不执行调用async1()进入async1遇到await async2()调用async2()→console.log(async2 end)→ 输出async2 endawait暂停执行console.log(async1 end)被包装成微任务放入微任务队列setTimeout→ 回调函数放入宏任务队列执行new Promiseconsole.log(Promise)是同步代码 → 输出Promiseresolve()执行.then()的回调放入微任务队列此时状态调用栈空微任务队列[async1 end, Promise1]注意顺序宏任务队列[setTimeout回调]第2步事件循环检查微任务调用栈为空执行微任务按入队顺序执行微任务第一个微任务console.log(async1 end)→ 输出async1 end第二个微任务console.log(Promise1)→ 输出Promise1微任务队列清空第3步执行宏任务执行setTimeout回调 → 输出setTimeout最终输出顺序script start → async2 end → Promise → async1 end → Promise1 → setTimeout那么到此应该是可以理解到事件循环的感觉了那接下来我们就开始看看事件循环的完整逻辑1. 任务分类宏任务MacrotaskssetTimeout、setIntervalsetImmediateNode.jsrequestAnimationFrame浏览器I/O 操作UI 渲染浏览器主线程的 script 标签内容微任务MicrotasksPromise.then()、.catch()、.finally()process.nextTick()Node.js优先级最高MutationObserver浏览器queueMicrotask()async/await的后续代码2. 事件循环执行顺序1. 执行一个宏任务script标签内容 2. 执行过程中遇到异步任务 - 宏任务 → 放入宏任务队列 - 微任务 → 放入微任务队列 3. 当前宏任务执行完毕 4. 检查微任务队列依次执行所有微任务 5. 如有必要进行UI渲染 6. 从宏任务队列取出下一个宏任务执行 7. 回到步骤3形成循环3. 重要规则规则1微任务优先每执行完一个宏任务都要清空所有微任务微任务执行期间产生的新微任务会加入当前队列并在本次循环中执行规则2async/await 转化javascriptasyncfunctionexample(){awaitfoo()// 相当于 Promise.resolve(foo()).then(...)console.log(A)// 这部分在微任务队列中}规则3多个任务队列宏任务可能有多个来源定时器、I/O等有各自的队列微任务只有一个队列按入队顺序执行在举例理解一下javascript// 测试微任务嵌套Promise.resolve().then((){console.log(微任务1);Promise.resolve().then((){console.log(微任务中的微任务);});}).then((){console.log(微任务2);});// 输出顺序微任务1 → 微任务中的微任务 → 微任务2javascript// 测试多个宏任务setTimeout(()console.log(宏任务1),10);Promise.resolve().then(()console.log(微任务1));setTimeout((){console.log(宏任务2);Promise.resolve().then(()console.log(宏任务2中的微任务));},1);Promise.resolve().then(()console.log(微任务2));setTimeout((){console.log(宏任务3);Promise.resolve().then(()console.log(宏任务3中的微任务));},0);结果 微任务1微任务2宏任务3宏任务3中的微任务 宏任务1宏任务2宏任务2中的微任务 为什么呢聪明的你已经会了 一开始 微任务 放入 微任务1 微任务2然后宏任务放入 宏任务3这个时候 计时器还没有到底100ms的时候 打印微任务1、微任务2然后微任务清空开始 宏任务3 放入微任务 宏任务3中的微任务然后打印宏任务3中的微任务 然后计时器到了打印宏任务1、宏任务2、放入微任务 打印宏任务2中的微任务大概就是这种感觉总结同步任务立即执行微任务比宏任务优先级高每个宏任务执行后都要清空所有微任务async/await本质是 Promise 的语法糖await后面的代码是微任务事件循环确保了 JavaScript 的单线程能够处理异步操作
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

征婚网站上教人做恒指期货性咨询

终极Windows DPI调整指南:多显示器缩放利器 【免费下载链接】SetDPI 项目地址: https://gitcode.com/gh_mirrors/se/SetDPI 在当今多显示器和高分辨率屏幕普及的时代,精确控制每个显示器的DPI设置对于提升工作效率至关重要。SetDPI是一个专为Win…

张小明 2025/12/27 1:18:41 网站建设

高端网站制作效果好wordpress get_tax_meta

作为前端开发者,你是否遇到过React应用卡顿、渲染缓慢的问题?本文将深入剖析React性能优化的核心技巧和常见痛点,帮助你打造丝滑流畅的用户体验。 一、React性能问题的常见痛点 1.1 不必要的重渲染 这是React应用中最常见的性能杀手。每次父…

张小明 2025/12/26 16:35:37 网站建设

网站备案许可证号查询网站网站更换主机注意

OpenJob完全指南:如何快速上手高性能分布式任务调度框架 【免费下载链接】openjob Distributed high performance task scheduling framework 项目地址: https://gitcode.com/gh_mirrors/op/openjob OpenJob是一个开源的分布式高性能任务调度框架&#xff0c…

张小明 2025/12/26 12:38:09 网站建设

做淘宝客网站要申请什么网站没有访问量

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

张小明 2025/12/26 12:38:21 网站建设

扬中网站建设门户报价wordpress 下载路径加密

大文件上传系统优化版(JavaVue3SpringBoot) 优化说明 经过实际测试和客户反馈,我对之前的方案进行了以下优化: 加密方案优化:改用CryptoJS实现AES加密,兼容IE9断点续传增强:增加MD5校验&…

张小明 2025/12/26 4:33:11 网站建设

网站如何调用数据库深圳市在建项目

第一章:量子模拟在VSCode Jupyter中的核心意义量子计算作为前沿科技正逐步从理论走向实践,而量子模拟则是理解与验证量子算法行为的关键手段。在本地开发环境中,VSCode 结合 Jupyter Notebook 提供了强大的交互式编程体验,使得研究…

张小明 2025/12/27 5:10:10 网站建设