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

商城站济宁建设局官方网站

商城站,济宁建设局官方网站,企业建站源码系统,东营市建设网站Promise(微任务)和setTimeout(宏任务)的理解 Promise 和 setTimeout 是 JavaScript 中的两个不同概念,主要用于处理异步操作,但它们的用途和工作方式有所不同。 Promise 定义:Promise 是一个表示异步操作最终完成(或失败&#…

Promise(微任务)和setTimeout(宏任务)的理解

Promise 和 setTimeout 是 JavaScript 中的两个不同概念,主要用于处理异步操作,但它们的用途和工作方式有所不同。

Promise

  • 定义:Promise 是一个表示异步操作最终完成(或失败)及其结果值的对象。
  • 用途:用于处理异步操作的结果,允许你在操作完成后执行某些代码(通过 .then() 和 .catch() 方法)。
  • 状态:Promise 有三种状态:pending(进行中)、fulfilled(已完成)和 rejected(已拒绝)。
  • 示例:
  const myPromise = new Promise((resolve, reject) => {// 异步操作setTimeout(() => {resolve("操作成功");}, 1000);});myPromise.then(result => {console.log(result); // 输出 "操作成功"}).catch(error => {console.error(error);});

setTimeout

  • 定义:setTimeout 是一个用于在指定的延迟后执行代码的函数
  • 用途:用于创建延迟执行的操作,通常用于简单的定时任务。
  • 返回值:返回一个定时器的 ID,可以用来取消定时器(使用 clearTimeout)。
  • 示例:
setTimeout(() => {console.log("1秒后执行");}, 1000);

总结

  • Promise 主要用于处理异步操作的结果,而 setTimeout 用于延迟执行某段代码。
  • Promise 可以链式调用,便于处理多个异步操作的结果,而 setTimeout 只是简单的延迟执行。

事件循环与帧的关系

  1. 事件循环:
  • JavaScript 是单线程的,意味着它一次只能执行一个任务。
  • 事件循环负责管理执行栈、微任务队列和宏任务队列之间的调度。
  1. 帧的概念:
  • 在浏览器中,帧(frame)通常指的是每次重绘(repaint)或重新渲染的周期。
  • 一帧的时间通常是 16.67 毫秒(在 60 FPS 的情况下),这是浏览器更新页面的频率。

当前执行栈

  1. 栈的结构
  • 当前执行栈是一个后进先出(LIFO, Last In First Out)的数据结构。
  • 当一个函数被调用时,它会被推入栈中;当函数执行完毕后,它会从栈中弹出。
  1. 执行过程
  • 当 JavaScript 引擎执行代码时,它会将全局上下文推入栈中。
  • 当一个函数被调用时,新的执行上下文会被创建并推入栈中。
  • 当函数执行完成后,它的上下文会被弹出,控制权会返回到调用该函数的上下文。

微任务

  • 定义:微任务是指在当前执行栈完成后立即执行的任务。它们通常用于处理 Promise 的回调。
  • 执行顺序:微任务会在当前宏任务完成后、下一个宏任务开始之前执行。也就是说,所有的微任务会在当前宏任务的所有代码执行完毕后立即执行。
  • 常见的微任务:
  1. Promise 的 .then() 和 .catch() 回调
  2. MutationObserver 的回调

宏任务

  • 定义:宏任务是指在事件循环中排队的任务,通常是较大的任务,可能会涉及到 I/O 操作、定时器等。
  • 执行顺序:宏任务会在微任务执行完毕后执行。每次事件循环的迭代都会从宏任务队列中取出一个任务执行。
  • 常见的宏任务:
  1. setTimeout
  2. setInterval
  3. I/O 操作(如网络请求)

事件循环的执行顺序

  1. 执行一个宏任务(例如,主线程中的代码)。
  2. 执行所有的微任务(例如,Promise 的回调)。
  3. 如果有下一个宏任务,继续执行下一个宏任务。
  4. 重复步骤 2 和 3,直到所有任务都完成。

也就是说Promise中的任务不会立即执行,而是在当前任务队列都执行完毕后才会执行,但是确实是在同一帧中执行的,若耗时过长也会卡进程。
而setTimeOut任务是把事件分发到下一帧去执行的,可以分帧执行减少每帧运行压力。

http://www.dtcms.com/a/521296.html

相关文章:

  • 企业网站规范贴吧高级搜索
  • 厦门网站建设小程序开发宁波网站制作与推广价格
  • 做网站防护的网站新冠疫苗公司
  • 网站标题如何修改北京美的网站
  • 沈阳网站选禾钻科技seo销售
  • 像Linux的systemd一样创建一个windows系统服务,让nginx服务随windows系统启动而自动启动服务
  • lesson75:Vue 数据绑定实战:v-model 表单处理与 v-bind 样式控制全解析
  • 图的基本概念与操作
  • **发散创新:深度解析错误处理机制的设计与实现**在软件开发过程中,错误处理是不
  • app大全软件网站中国建筑网官网监理工程师网站
  • 三明网站建设公司免费秒开小游戏
  • 宿迁华夏建设集团网站东莞网络科技公司排名
  • NVIDIA NCCL 源码学习(十五)- Symmetric Memory
  • 3.无重复字符的最长子串
  • 网站开发范例文档wordpress新建页面慢
  • 什么是 Spring IOC 容器?
  • 重庆网站建设的好处网站建设不好
  • wordpress做游戏网站做logo赚钱的网站
  • 搜索建站百度95099怎么转人工
  • DeepSeek-GRPO (PPO)
  • 企业免费网站系统下载地址wordpress 如何开发
  • 阿里云域名备案网站建设方案上海工程建设造价信息网站
  • 山东高密网站建设wordpress怎么用模板
  • Prometheus(三)—— PromQL从入门到精通:掌握Prometheus数据查询的核心技术
  • 怎么在国外建网站建设行业网站大概需要都少钱
  • 手机网站有什么区别是什么意思网站开发所需费用支出有哪些
  • 网站空间的根目录可以以个人名义做网站么
  • 新网站推广方案系统优化有什么用
  • 外部依赖不稳定会给项目带来哪些风险
  • 【图像处理基石】多光谱图片去噪入门:从概念到Python实操