当前位置: 首页 > wzjs >正文

分销商城开发多少钱浙江短视频seo优化网站

分销商城开发多少钱,浙江短视频seo优化网站,天堂网站,如何做网站卖画JavaScript 主线程与异步队列执行顺序详解 JavaScript 是单线程语言,通过事件循环(Event Loop)机制来处理同步和异步任务。以下是主线程与异步队列的执行顺序解析: 1. 执行顺序基本原则 console.log(1. 主线程同步任务);setTim…

JavaScript 主线程与异步队列执行顺序详解

JavaScript 是单线程语言,通过事件循环(Event Loop)机制来处理同步和异步任务。以下是主线程与异步队列的执行顺序解析:

1. 执行顺序基本原则

console.log('1. 主线程同步任务');setTimeout(() => {console.log('6. 宏任务队列 - setTimeout');
}, 0);Promise.resolve().then(() => {console.log('4. 微任务队列 - Promise');
});console.log('2. 主线程同步任务');queueMicrotask(() => {console.log('5. 微任务队列 - queueMicrotask');
});console.log('3. 主线程同步任务');// 输出顺序:
// 1. 主线程同步任务
// 2. 主线程同步任务
// 3. 主线程同步任务
// 4. 微任务队列 - Promise
// 5. 微任务队列 - queueMicrotask
// 6. 宏任务队列 - setTimeout

2. 执行顺序详细机制

执行栈(Call Stack)

  • 同步代码立即执行
  • 函数调用形成栈帧

任务队列(Task Queue)

  1. 微任务队列(Microtask Queue)

    • Promise 回调(then/catch/finally)
    • queueMicrotask()
    • MutationObserver(浏览器)
    • process.nextTick(Node.js)
  2. 宏任务队列(Macrotask Queue)

    • setTimeout/setInterval
    • I/O 操作
    • UI 渲染(浏览器)
    • setImmediate(Node.js)
    • requestAnimationFrame(浏览器)

3. 完整事件循环流程

  1. 执行当前同步代码(主线程)
  2. 执行完所有同步代码后,检查微任务队列
    • 执行所有微任务(直到队列为空)
  3. 如有需要,进行UI渲染(浏览器环境)
  4. 宏任务队列取出一个任务执行
  5. 重复上述过程(事件循环)

4. 复杂示例分析

console.log('脚本开始');setTimeout(() => {console.log('setTimeout1');Promise.resolve().then(() => {console.log('Promise in setTimeout1');});
}, 0);setTimeout(() => {console.log('setTimeout2');
}, 0);Promise.resolve().then(() => {console.log('Promise1');Promise.resolve().then(() => {console.log('Promise in Promise1');});
});Promise.resolve().then(() => {console.log('Promise2');
});console.log('脚本结束');/* 输出顺序:脚本开始脚本结束Promise1Promise2Promise in Promise1setTimeout1Promise in setTimeout1setTimeout2
*/

5. Node.js 与浏览器的差异

环境微任务优先级宏任务优先级顺序
浏览器Promise > MutationObserver动画帧 > I/O > 定时器 > UI渲染
Node.jsprocess.nextTick > PromisesetImmediate > setTimeout/setInterval

6. 实践建议

  1. 长时间运行的微任务会阻塞渲染和宏任务执行

    // 避免这种情况
    Promise.resolve().then(() => {while(true) { /* 无限循环 */ }
    });
    
  2. 合理分配任务类型

    • 高优先级任务:使用微任务
    • 低优先级任务:使用宏任务
  3. 避免嵌套太深

    // 不易维护的深层嵌套
    setTimeout(() => {Promise.resolve().then(() => {setTimeout(() => {// ...}, 0);});
    }, 0);
    

理解这些执行顺序规则对于调试异步代码、优化性能和避免竞态条件至关重要。

http://www.dtcms.com/wzjs/364655.html

相关文章:

  • 企业营销网站的建设北京疫情最新消息情况
  • 做美食直播哪个网站最好成都seo推广
  • 手机软件开发公司排名优化法治化营商环境
  • 八戒网站做推广互联网营销策划方案
  • 广州门户网站建设网络营销怎么做推广
  • 网站建设有什么方法连接数据库网站seo置顶
  • 如何做京东优惠券网站引擎搜索技巧
  • 如何建立国际网站郑州网站定制
  • 做郑州的购物网站用什么名草根seo视频大全网站
  • 成功的微网站恢复原来的百度
  • 网站建设发展的前景济南网站制作平台
  • wordpress小绿锁奉节县关键词seo排名优化
  • 武汉经济开发区汉南区教育云网站站长统计在线观看
  • 做网站需要哪些人网络营销的功能有哪些?
  • php 用什么做网站服务器吗获客引流100种方法
  • 南城网站优化公司营业推广方案
  • 南京制作网站企业商丘网站seo
  • 网站建设服务价格怎样在网上做宣传
  • visual studio 2010 网站开发教程b站推广引流最佳方法
  • 咸宁制作网站seo网站推广软件
  • 怎么注册自己的网站百度seo关键词排名查询
  • 行业排名查询网站seo推广培训资料
  • 手机浏览微网站google关键词分析
  • 网红网站建设官网宁波网络推广
  • 网站备案流程实名认证石家庄seo关键词排名
  • wordpress模板如何安装教程视频教程百度ocpc怎么优化
  • 潍坊网站优化排名关键词seo服务
  • 建站工具论坛百度站长工具查询
  • 做的好的商城网站天津快速关键词排名
  • 做网站推广的话术宣传网页制作