呼和浩特可以做网站的公司/关键词检测

呼和浩特可以做网站的公司,关键词检测,个人网页模板王,知名的网页设计师在前端开发中,**宏任务(Macro Task)**和**微任务(Micro Task)**是 JavaScript 事件循环(Event Loop)中的两个重要概念。它们决定了异步代码的执行顺序。 --- ### 1. **事件循环(Ev…

在前端开发中,**宏任务(Macro Task)**和**微任务(Micro Task)**是 JavaScript 事件循环(Event Loop)中的两个重要概念。它们决定了异步代码的执行顺序。

---

### 1. **事件循环(Event Loop)**
JavaScript 是单线程的,通过事件循环机制处理异步任务。事件循环的核心是:
- **主线程**:执行同步代码。
- **任务队列**:存放异步任务的回调函数。
- **事件循环**:不断检查任务队列,将任务推入主线程执行。

任务队列分为两种:
- **宏任务队列**:存放宏任务。
- **微任务队列**:存放微任务。

---

### 2. **宏任务(Macro Task)**
宏任务是指需要较长时间执行的任务,通常包括:
- `setTimeout` 和 `setInterval` 的回调。
- `setImmediate`(Node.js 特有)。
- `requestAnimationFrame`(浏览器特有)。
- I/O 操作(如文件读写、网络请求)。
- UI 渲染(浏览器特有)。

**执行时机**:每次事件循环中,主线程会执行一个宏任务,然后检查微任务队列。

---

### 3. **微任务(Micro Task)**
微任务是指需要尽快执行的任务,通常包括:
- `Promise` 的回调(`then`、`catch`、`finally`)。
- `MutationObserver`(监听 DOM 变化)。
- `process.nextTick`(Node.js 特有)。

**执行时机**:每次宏任务执行完毕后,事件循环会清空微任务队列中的所有任务,然后再执行下一个宏任务。

---

### 4. **执行顺序**
事件循环的执行顺序如下:
1. 执行主线程的同步代码。
2. 执行当前宏任务。
3. 清空微任务队列中的所有任务。
4. 执行 UI 渲染(浏览器)。
5. 执行下一个宏任务。

---

### 5. **代码示例**
```javascript
console.log('1. 同步代码'); // 同步代码,立即执行

setTimeout(() => {
  console.log('4. 宏任务 - setTimeout'); // 宏任务
}, 0);

Promise.resolve().then(() => {
  console.log('3. 微任务 - Promise'); // 微任务
});

console.log('2. 同步代码'); // 同步代码,立即执行
```

**输出结果**:
```
1. 同步代码
2. 同步代码
3. 微任务 - Promise
4. 宏任务 - setTimeout
```

**解释**:
1. 同步代码立即执行。
2. `Promise` 的微任务在同步代码之后、宏任务之前执行。
3. `setTimeout` 的宏任务在微任务之后执行。

---

### 6. **宏任务和微任务的区别**
| 特性            | 宏任务(Macro Task)               | 微任务(Micro Task)               |
|-----------------|------------------------------------|------------------------------------|
| **执行时机**     | 每次事件循环执行一个宏任务         | 每次宏任务执行后清空微任务队列     |
| **常见任务**     | `setTimeout`、`setInterval`、I/O   | `Promise`、`MutationObserver`      |
| **优先级**       | 较低                               | 较高                               |
| **队列类型**     | 宏任务队列                         | 微任务队列                         |

---

### 7. **实际应用**
- **优化性能**:将高优先级任务放入微任务队列,确保尽快执行。
- **避免阻塞**:将耗时任务放入宏任务队列,避免阻塞主线程。
- **控制执行顺序**:通过微任务和宏任务的特性,控制异步代码的执行顺序。

---

### 总结
- **宏任务**:需要较长时间执行的任务,如 `setTimeout`、I/O 操作。
- **微任务**:需要尽快执行的任务,如 `Promise`、`MutationObserver`。
- **执行顺序**:同步代码 → 微任务 → 宏任务 → UI 渲染 → 下一个宏任务。

理解宏任务和微任务的机制,有助于更好地掌握 JavaScript 的异步编程和事件循环。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/895634.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

. Unable to find a @SpringBootConfiguration(默认软件包中的 Spring Boot 应用程序)

解决: 新建一个包即可 问题: 默认软件包中的 Spring Boot 应用程序。 原因: 默认包的定义 : 如果一个 Java 类没有使用 package 声明包名,则该类会被放置在默认包中。Spring Boot 遵循 Java 的包管理约定&#xff…

渗透利器:YAKIT 工具-基础实战教程.

YAKIT 工具-基础实战教程. YAKIT(Yak Integrated Toolkit)是一款基于Yak语言开发的集成化网络安全单兵工具,旨在覆盖渗透测试全流程,提供从信息收集、漏洞扫描到攻击实施的自动化支持。其核心目标是通过GUI界面降低Yak语言的使用…

CRISPR spacers数据库;CRT和PILER-CR用于MAGs的spacers搜索

iPHoP:病毒宿主预测-CSDN博客 之前介绍了这个方法来预测病毒宿主,今天来介绍另一种比较用的多的方法CRISPR比对 CRISPR spacers数据库 Dash 在这可以下载作者搜集的spacers用于后期比对 CRT和PILER-CR 使用 CRT 和 PILERCR 识别 CRISPR 间隔区&#x…

DeepSeek从入门到精通:提示词设计的系统化指南

目录 引言:AIGC时代的核心竞争力 第一部分 基础篇:提示词的本质与核心结构 1.1 什么是提示词? 1.2 提示词的黄金三角结构 第二部分 类型篇:提示词的六大范式 2.1 提示语的本质特征 2.2 提示语的类型 2.2.1 指令型提示词 …

【EDA学习】嘉立创题库

一、多选题 1.嘉立创题库的作用是什么,以下描述正确的是? A.提供学习平台,帮助客户了解嘉立创工艺 B.可成为嘉立创客户所在企业的内部培训资料,打通设计与制造,提高产品研发效率,降本增效 C.可成为嘉立创客…

Python PyCharm DeepSeek接入

Python PyCharm DeepSeek接入 创建API key 首先进入DeepSeek官网,https://www.deepseek.com/ 点击左侧“API Keys”,创建API key,输出名称为“AI” 点击“创建",将API key保存,复制在其它地方。 在PyCharm中下…

【Pico】使用Pico进行无线串流搜索不到电脑

使用Pico进行无线串流搜索不到电脑 官串方式:使用Pico互联连接电脑。 故障排查 以下来自官方文档 请按照以下步骡排除故障: 确认电脑和一体机连接了相同的路由器WiFi网络(相同网段) IP地址通常为192.168.XX,若两设备的IP地址前三段相同&…

[免费]Springboot+Vue医疗(医院)挂号管理系统【论文+源码+SQL脚本】

大家好,我是java1234_小锋老师,看到一个不错的SpringbootVue医疗(医院)挂号管理系统,分享下哈。 项目视频演示 【免费】SpringBootVue医疗(医院)挂号管理系统 Java毕业设计_哔哩哔哩_bilibili 项目介绍 在如今社会上,关于信息上…

沃德校园助手系统php+uniapp

一款基于FastAdminThinkPHPUniapp开发的为校园团队提供全套的技术系统及运营的方案(目前仅适配微信小程序),可以更好的帮助你打造自己的线上助手平台。成本低,见效快。各种场景都可以自主选择服务。 更新日志 V1.2.1小程序需要更…

Linux 系统上以 root 用户身份运行 ./mysql.server start 命令,但仍然收到 “Permission denied” 错误

如图 1 所示,当在 Linux 系统上以 root 用户身份运行 ./mysql.server start 命令,但仍然收到 “Permission denied” 错误时,这通常不是由于权限不足(因为您已经是 root 用户),而可能是由于 mysql.server 脚…

Android的Activity生命周期知识点总结,详情

一. Activity生命周期 1.1 返回栈知识点 二. Activity状态 2.1 启动状态 2.2 运行状态 2.3 暂停状态 2.4 停止状态 2.5 销毁状态 三. Activity生存期 3.1 回调方法 3.2 生存期 四. 体验Activity的生命周期 五. Activity被回收办法 引言: 掌握Acti…

Python----PyQt开发(PyQt基础,环境搭建,Pycharm中PyQttools工具配置,第一个PyQt程序)

一、QT与PyQT的概念和特点 1.1、QT QT是一个1991年由The Qt Company开发的跨平台C图形用户界面应用程序开发 框架,可构建高性能的桌面、移动及Web应用程序。也可用于开发非GUI程序,比如 控制台工具和服务器。Qt是面向对象的框架,使用特殊的代…

win10 系统 自定义Ollama安装路径 及模型下载位置

win10 系统 自定义Ollama安装路径 及模型下载位置 由于Ollama的exe安装软件双击安装的时候默认是在C盘,以及后续的模型数据下载也在C盘,导致会占用C盘空间,所以这里单独写了一个自定义安装Ollama安装目录的教程。 Ollama官网地址&#xff1…

微软官方出品GPT大模型编排工具:7个开源项目

今天一起盘点下,12月份推荐的7个.Net开源项目(点击标题查看详情)。 1、一个浏览器自动化操作的.Net开源库 这是一个基于 Google 开源的 Node.js 库 Puppeteer 的 .NET 开源库,方便开发人员使用无头 Web 浏览器抓取 Web、检索 Ja…

苹果CMS站群插件的自动生成功能:提升网站流量的秘诀

引言 在数字营销的浪潮中,站群技术因其强大的流量引导能力而备受青睐。苹果CMS作为一款优秀的内容管理系统,凭借其灵活性和可扩展性,成为了站群管理的理想选择。本文将详细介绍苹果CMS站群插件的自动生成功能,探讨如何通过这一功…

VS Code User和System版区别【推荐使用System版本】and VSCode+Keil协同开发之Keil Assistant

VS Code User和System版区别 Chapter1 VS Code User和System版区别1. 对于安装而言2. 结束语 Chapter2 VS Code 安装、配置教程及插件推荐插件: Chapter3 VSCodeKeil协同开发之Keil Assistant1. 效果展示2. Keil Assistant简介3. Keil Assistant功能特性4. 部署步骤…

大语言模型入门

大语言模型入门 1 大语言模型步骤1.1 pre-training 预训练1.1.1 从网上爬数据1.1.2 tokenization1.1.2.1 tokenization using byte pair encoding 1.3 预训练1.3.1 context1.3.2 training1.3.3 输出 1.2 post-training1:SFT监督微调1.2.1 token 1.3 强化学习1.3.1 基…

DeepSeek R1 本地部署和知识库搭建

一、本地部署 DeepSeek-R1,是幻方量化旗下AI公司深度求索(DeepSeek)研发的推理模型 。DeepSeek-R1采用强化学习进行后训练,旨在提升推理能力,尤其擅长数学、代码和自然语言推理等复杂任务 。 使用DeepSeek R1, 可以大大…

基于大数据的全国热门旅游景点数据分析系统的设计与实现

【大数据】基于大数据的全国热门旅游景点数据分析系统的设计与实现(完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 该系统主要包括登录注册、系统首页、图表分析、数据管理和个人信息五大功能模…

李宏毅机器学习笔记:【6.Optimization、Adaptive Learning Rate】

Optimization 1.Adaptive Learning Rate2.不同的参数需要不同的学习率3.Root Mean Square4.RMSProp5.Adam6.learning rate scheduling7.warm up总结 critical point不一定是你在训练一个network时候遇到的最大的障碍。 1.Adaptive Learning Rate 也就是我们要给每个参数不同的…