杭州网站seo价格做网站推广见客户的话术

张小明 2026/1/7 13:18:45
杭州网站seo价格,做网站推广见客户的话术,网站优化协议,做网站设计的长宽一般是多少钱第一部分#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进行投诉反馈,一经查实,立即删除!

白银网站建设熊掌号教您如何找专业网站制作公司

3分钟掌握FastDFS-Client:Java分布式文件存储终极指南 【免费下载链接】FastDFS_Client Java Client for FastDFS 项目地址: https://gitcode.com/gh_mirrors/fa/FastDFS_Client 想要在Java应用中快速实现高效的文件存储解决方案吗?FastDFS-Clien…

张小明 2026/1/3 23:27:27 网站建设

wordpress页面顶部搜素引擎排名优化技术

你是否曾经遇到过这样的情况:看到一个精彩的在线视频,想要保存下来反复观看,却发现它使用了M3U8或MPD格式,传统的下载工具完全无能为力?😕 这种分段式流媒体文件确实让很多用户头疼不已。 【免费下载链接】…

张小明 2026/1/6 4:19:33 网站建设

重庆网站建设制作公司网站导航栏设计代码

在数字化转型浪潮中,企业面临的核心挑战之一是如何打破系统壁垒、联通数据孤岛,实现业务效率与创新能力的双重提升。传统的集成方式往往开发周期长、技术门槛高、灵活性不足,难以适应快速变化的业务需求。在此背景下,更轻量、更易…

张小明 2026/1/7 12:47:03 网站建设

做网站域名费向哪里交网站制作公司小邓

第一章:为什么你的Open-AutoGLM日志总是丢失?在部署 Open-AutoGLM 模型服务时,日志丢失是一个常见却容易被忽视的问题。许多开发者发现服务运行异常后无法追溯原因,根源往往在于日志系统未正确配置或被意外覆盖。日志输出路径未显…

张小明 2026/1/6 6:47:40 网站建设

手机ps软件如何做ppt下载网站中国工程网查询

CopyQ脚本编程全攻略:从入门到精通的剪贴板自动化技巧 【免费下载链接】CopyQ hluk/CopyQ: CopyQ 是一个高级剪贴板管理器,具有强大的编辑和脚本功能,可以保存系统剪贴板的内容并在以后使用。 项目地址: https://gitcode.com/gh_mirrors/co…

张小明 2026/1/6 2:15:06 网站建设

国际网站设计网页版千图网

你是否曾感到电脑运行越来越慢,却找不到原因?那个默默在后台运行的OneDrive可能正是消耗系统资源的"后台占用程序"。通过专业的卸载工具,我们可以彻底清除这个预装组件,让Windows 10重获新生。 【免费下载链接】OneDriv…

张小明 2026/1/6 1:45:23 网站建设