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

重庆市建设工程信息网官网入口郑州seo优化公司

重庆市建设工程信息网官网入口,郑州seo优化公司,wordpress卢松松模板,网站子目录怎么做反向代理设置🌟 Promise 和 setTimeout 的区别 虽然 Promise 和 setTimeout 都用于处理异步操作,但它们在机制和执行顺序上有很大区别。要理解它们的区别,必须先了解 Event Loop。 一、核心区别 特性PromisesetTimeout异步队列微任务队列(Mi…

🌟 Promise 和 setTimeout 的区别

虽然 PromisesetTimeout 都用于处理异步操作,但它们在机制和执行顺序上有很大区别。要理解它们的区别,必须先了解 Event Loop


一、核心区别
特性PromisesetTimeout
异步队列微任务队列(Microtask Queue)宏任务队列(Macrotask Queue)
何时执行当前事件循环结束后立即执行下一轮事件循环时才执行
执行优先级
常见用途异步操作、异步链式调用定时任务、延时执行

🚀 二、Event Loop 详解

JavaScript 是单线程的,使用**事件循环(Event Loop)**来处理异步任务。任务分为两类:

  1. 宏任务(Macrotask)
    • 主代码块(script)
    • setTimeoutsetInterval
    • 事件回调(如点击、网络请求)
  2. 微任务(Microtask)
    • Promise 回调(then, catch, finally
    • MutationObserver
    • queueMicrotask

Event Loop 执行顺序:

  1. 执行同步任务(全局代码)。
  2. 执行所有微任务队列中的任务。
  3. 执行一个宏任务队列中的任务。
  4. 重复步骤 2 和 3,直到任务队列为空。

📝 三、代码示例:Promise 和 setTimeout 执行顺序

来看一个经典示例:

console.log("script start");setTimeout(() => {console.log("setTimeout");
}, 0);Promise.resolve().then(() => {console.log("promise1");
}).then(() => {console.log("promise2");
});console.log("script end");

执行分析:

  1. 同步代码执行:

    script start
    script end
    

    同步任务先执行。

  2. 微任务执行:

    promise1
    promise2
    

    微任务比宏任务优先级高,Promise 回调属于微任务队列。

  3. 宏任务执行:

    setTimeout
    

    宏任务在所有微任务执行完成后才会执行。


输出顺序:

script start
script end
promise1
promise2
setTimeout

🪜 四、再来一个复杂点的示例

setTimeout(() => {console.log("timeout1");
}, 0);Promise.resolve().then(() => {console.log("promise1");setTimeout(() => {console.log("timeout2");}, 0);
}).then(() => {console.log("promise2");
});console.log("script end");

执行分析:

  1. 同步任务:

    script end
    

    直接打印。

  2. 微任务:

    promise1
    promise2
    

    两个 then 回调依次执行。

  3. 宏任务:

    timeout1
    timeout2
    

    两个 setTimeout 回调依次执行。


最终输出:

script end
promise1
promise2
timeout1
timeout2

🎯 五、真实场景应用:

1. 数据请求和处理

通常会使用 Promise 来进行数据请求和异步处理:

fetch("https://api.example.com/data").then(response => response.json()).then(data => console.log("Data received:", data)).catch(error => console.error("Error:", error));

2. 轮询操作

在轮询操作中,可以结合 setTimeoutPromise

function pollData() {setTimeout(() => {fetch("https://api.example.com/status").then(response => response.json()).then(data => {console.log("Status:", data);pollData();  // 继续轮询});}, 1000);
}pollData();

🌐 六、总结

  1. 执行优先级:

    • Promise 属于微任务,优先级高。
    • setTimeout 属于宏任务,优先级低。
  2. 事件循环顺序:

    • 执行同步任务
    • 执行所有微任务
    • 执行下一个宏任务
  3. 编程应用:

    • 使用 Promise 实现异步链式调用
    • 使用 setTimeout 实现延迟执行

💡 面试要点:

  1. 为什么 PromisesetTimeout 先执行?

    • 因为 Promise 属于微任务,而 setTimeout 属于宏任务
  2. 如何控制异步任务顺序?

    • 利用 async/await 或将异步操作放在 Promise 中。
  3. 如何保证异步操作的顺序执行?

    • 通过链式调用then)、async/await、或将任务放入微任务队列中

希望这些讲解能帮助你彻底理解 PromisesetTimeout 的区别以及 Event Loop 的执行顺序!

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

相关文章:

  • 厦门做点击付费网站网络软文案例
  • 如何做微信网站日本比分预测最新分析
  • b2c网站建设旅游小程序制作一个需要多少钱
  • 西宁房地产网站建设网站seo关键词排名
  • 地产网站互动营销网络推广公司简介模板
  • 淘宝运营培训视频教程广州营销优化
  • 用地方别名做网站名全国新冠疫苗接种率
  • 做网站的具体步骤搜索引擎调词平台哪个好
  • word里网站的超链接怎么做我想做网络推广
  • 网站空间租用哪家好简阳seo排名优化课程
  • 可以做免费推广的网站有哪些百度店铺注册
  • 做网站需要缴什么费用关键词优化是什么
  • 呼伦贝尔市住房和城乡建设委网站windows优化大师好用吗
  • wap网站开发协议seo网站优化推广费用
  • 企业手机建站系统友情链接买卖
  • 做电影采集网站用什么vps深圳市seo上词多少钱
  • 旅游营销网站开发北京搜索引擎优化seo专员
  • 阜阳 做网站宜昌网站seo
  • 怎么用ftpxp做网站盘多多搜索引擎入口
  • wordpress 导航高亮百度seo最成功的优化
  • 北京门户网站建设郑州网站推广电话
  • 邯郸哪个公司做网站好最近一周国内热点新闻
  • 多语言网站如何做网络推广费用一般多少
  • 中山精品网站建设策划书精准客户软件
  • 制作网站首页网站seo诊断报告怎么写
  • 东莞学做网站精准网络营销推广
  • 重庆市建设执业注册中心网站广告推广平台代理
  • 餐馆网站怎么做的手机访问另一部手机访问文件
  • 商家网站建设网络营销的特点有哪些特点
  • 网站建设会计分录怎么做新媒体销售好做吗