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

男人需要网站免费产品推广网站

男人需要网站,免费产品推广网站,网上开店怎么注册,哪个平台电商运营比较好目录 一、定时器函数 二、JavaScript 执行机制 三、同步与异步任务 四、事件循环原理 摘要:本文系统讲解了JavaScript定时器与执行机制,主要包含四个部分:1)定时器函数对比(setTimeout单次执行与setInterval重复执…

目录

一、定时器函数

二、JavaScript 执行机制

三、同步与异步任务

四、事件循环原理


摘要:本文系统讲解了JavaScript定时器与执行机制,主要包含四个部分:1)定时器函数对比(setTimeout单次执行与setInterval重复执行)及使用示例;2)JS单线程特性引发的异步处理需求;3)同步与异步任务执行差异(同步阻塞、异步不阻塞);4)事件循环原理(执行栈、WebAPI、任务队列的协同工作)。重点指出:定时器是异步操作,即使延迟0ms也会在同步代码后执行;事件循环机制保证了单线程环境下的非阻塞执行。文章最后提供了高频面试题解答和记忆口诀。

一、定时器函数

两种定时器对比

类型函数执行特点清除方法应用场景
延时函数setTimeout()执行一次后停止clearTimeout()广告弹窗延迟关闭
间歇函数setInterval()重复执行直到手动清除clearInterval()轮播图自动切换

代码示例

// 1. 延时函数(3秒后执行)
const timer1 = setTimeout(() => {console.log('3秒后执行');
}, 3000);// 清除延时(在3秒前调用可阻止执行)
// clearTimeout(timer1);// 2. 间歇函数(每秒执行)
let count = 0;
const timer2 = setInterval(() => {count++;console.log(`已执行 ${count} 次`);if(count >= 5) {clearInterval(timer2); // 5次后停止}
}, 1000);

⚠️ 关键注意事项

  1. 定时器时间单位为毫秒(1000ms = 1s)

  2. 定时器是异步操作,不会阻塞后续代码执行

  3. 定时器ID需保存以便清除


二、JavaScript 执行机制

单线程本质

JavaScript 是单线程语言,同一时间只能执行一个任务

为什么需要单线程?

单线程问题与解决方案

问题解决方案
长时间任务阻塞页面渲染异步任务+事件循环
无法充分利用多核CPUWeb Worker(多线程)

三、同步与异步任务

对比解析

特性同步任务异步任务
执行顺序顺序执行,前一个完成才执行后一个不阻塞主线程,后续代码可立即执行
执行位置主线程执行栈任务队列等待执行
典型示例console.log()、循环计算setTimeoutclick事件
类比排队点餐(一人点完才轮到下一个)扫码点餐(点完可做其他事)

代码执行分析

console.log(1111);            // 同步任务1
setTimeout(() => {            // 异步任务console.log(2222);          // 回调函数
}, 0);                        // 即使延迟0ms也是异步
console.log(3333);            // 同步任务2/* 输出顺序:
1111
3333
2222
*/

❗ 重要结论

所有异步任务都需要回调函数支持
即使延迟时间为0ms,setTimeout仍是异步任务


四、事件循环原理

执行流程

核心组件说明

  1. 执行栈

    • 存放当前正在执行的同步任务

    • LIFO(后进先出)结构

  2. Web API

    • 浏览器提供的异步处理模块

    • 包含:

      • Timer模块(setTimeout/setInterval

      • DOM事件模块(click/scroll等)

      • 网络请求模块(AJAX)

  3. 任务队列

    • 存放已完成的异步任务回调

    • 多个队列按优先级执行(微任务>宏任务)

  4. 事件循环

    • 持续检查执行栈是否为空

    • 当执行栈为空时,从任务队列取任务推入执行栈

完整执行流程

  1. 所有同步任务进入执行栈顺序执行

  2. 遇到异步任务交给Web API处理

  3. Web API处理完成后将回调推入任务队列

  4. 执行栈清空后,事件循环将任务队列中的回调推入执行栈执行

  5. 重复步骤1-4形成循环


✅ 核心要点总结

📝 高频面试题速答

  1. Q:setTimeout(fn, 0) 为什么在同步代码后执行?

    A:即使延迟0ms,setTimeout仍是异步任务,需等待同步任务执行完

  2. Q:JavaScript为什么是单线程?

    A:为避免DOM操作冲突(如同时添加删除同一元素)

  3. Q:事件循环的基本原理?

    A:持续检查执行栈是否为空,空时从任务队列取任务执行

  4. Q:同步和异步任务的区别?

    A:同步任务阻塞后续代码,异步任务不阻塞主线程

  5. Q:如何清除间歇定时器?

    A:使用clearInterval()并传入定时器ID


🧠 记忆口诀

"一栈二列三循环,同步先行异步随"

  • 一栈:执行栈处理同步任务

  • 二列:任务队列存放异步回调

  • 三循环:事件循环连接两者

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

相关文章:

  • 单页企业官网模板西安市seo排名按天优化
  • 福州建设厅官方网站人民日报今日头条新闻
  • 广州在线图文网络科技中心网站建设劳动局免费培训项目
  • 做调查问卷能挣钱的网站建网站专业
  • wap端是指手机端吗seo排名优化工具推荐
  • 天津开发区网站设计公司网销怎么销售的
  • 东莞网站制作网站搜索网站排行榜
  • 网站如何安装dedecms如何在网站上推广自己的产品
  • 大良网站设计价格找网站公司制作网站
  • 网站开发公司赚钱吗大型营销型网站制作
  • 门户网站的建设方案百度搜索引擎怎么弄
  • 网站建设品牌策划网络游戏推广公司
  • 铁路网站建设论文百度账号官网
  • 潍坊专业做网站的公司云南seo公司
  • 高端网站建设的网站惠州百度seo哪里强
  • 化妆品网站源码asp营销外包公司
  • 如何用域名访问网站凡科建站下载
  • 网站案例 网站建设故事型软文广告
  • asp.net动态网站开发技术制作网页的基本步骤
  • 德阳网站开发熊掌号百度竞价排名收费
  • 网站建设案例典型企业案例外链怎么做
  • 阿里妈妈网站怎么做搜索引擎竞价排名
  • 腾脉网建站什么是营销模式
  • 可信网站免费认证站长工具seo综合查询源码
  • 怎么查看一个网站开发语言app推广30元一单
  • 闸北微信网站建设百度快速排名案例
  • 个人备案网站放什么手续可以发布软文的平台
  • 买国外域名 网站长沙百度seo
  • 没有照片怎么做网站网站如何推广营销
  • 厦门专业网站设计长沙互联网网站建设