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

北京住房和城乡建设部官方网站最火网站排名

北京住房和城乡建设部官方网站,最火网站排名,抖音关键词seo系统,长沙网站建设推广🌟 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.cadmedia.cn/news/14227.html

相关文章:

  • 网站建设服务合同需要哪些资料cps游戏推广平台
  • 做装修公司的网站设计网站排行
  • 如何做网站详细步骤汕头seo公司
  • 唐山建网站网站seo内容优化
  • 农业种植养殖网站建设免费seo排名软件
  • 江苏省建设厅工会网站华为手机软文范文300
  • 运行网站需要多少钱google ads
  • 仿站在线徐州seo推广
  • 牛商营销型网站建设方案搜索引擎排名营销
  • 青岛栈桥门票多少钱天津seo建站
  • 企业网站优化方案案例武汉百度推广入口
  • 成立公司需要具备什么条件seo精灵
  • 沈阳沙盘模型公司重庆百度搜索优化
  • 临清住房建设网站百度小说排行榜2021
  • 陕西省建设监理协会网站证书网络推广宣传方式
  • 母婴网站设计开发广州疫情最新消息今天封城了
  • 北京朝阳做网站搜索引擎推广方案案例
  • c 网站开发流程移动慧生活app下载
  • 江西抚州建设网站信息流优化师面试常见问题
  • 想建书画网站怎么做的徐州百度seo排名
  • 庆阳网站设计最热门的短期培训课程
  • 济宁任城区建设局网站百度联盟官网登录入口
  • 12306网站开发语言收录网站查询
  • 企业解决方案是什么seo优化排名软件
  • 简历做的很棒的网站公司网站制作流程
  • 广州建设网站专家seo排名优化教学
  • 一流的嘉兴网站建设广州30万人感染
  • 网络营销策略相关理论威海seo优化公司
  • 太原做网站baidu百度推广怎么注册账号
  • 简单的房源展示网站开发单页应用seo如何解决