后盾人JS -- 异步编程,宏任务与微任务

server/2025/2/12 5:27:33/

异步加载图片体验JS任务操作

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><script>function loadImag(src,resolve,reject){let image = new Image()image.src = srcimage.onload = ()=>{resolve(image)}image.onerror = reject}loadImag("images/houdunren.png",(image)=>{document.body.appendChild(image)        //回调方式},()=>{console.log("加载失败")})</script>
</body>
</html>

定时器的任务轮询

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<style>div{background-color: greenyellow;width: 200px;height: 200px;position: relative;left: 0;}
</style>
<body><div></div><script>function interval(callback,delay){let id = setInterval(()=>callback(id),delay)}interval(timeId => {const div = document.querySelector("div")let left = parseInt(window.getComputedStyle(div).left)div.style.left = left + 10 + "px"if(left >= 200){clearInterval(timeId)interval(timeId=>{let width = parseInt(window.getComputedStyle(div).width)div.style.width = width - 10 + "px"if(width<=20){clearInterval(timeId)}},100)}},50)console.log("后盾人.com")</script>
</body>
</html>

定时器有任务轮询(因为是异步的),所以肯定是主线程执行完之后才来执行它

通过文件依赖了解任务排序

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><script>function load(src, resolve) {let script = document.createElement("script")script.src = srcscript.onload = resolvedocument.body.appendChild(script)}load("js/hd.js", () => {load("js/houdunren.js", () => {houdunren()})})</script>
</body></html>

这是文件的依赖,学习promise后会让这个更加的简洁

后面就看不懂了

宏任务与微任务

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><script>setTimeout(()=>{console.log("定时器")},0)Promise.resolve().then(value=>{console.log("Promise")})console.log("后盾人")</script>
</body>
</html>

定时器的任务编排

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><script>setTimeout(()=>{console.log("定时器 1")},2000)setTimeout(()=>{console.log("定时器 2")},2000)console.log("后盾人")for(let i = 0;i<1000;i++){console.log("")}</script>
</body>
</html>

时间需要少的先执行

DOM渲染任务是放到最后的,JS是后渲染的

进度条

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<style>div{width: 100px;background-color: greenyellow;}
</style>
<body><div id="hd"></div><script>function handle(){let i = 0const hd = document.getElementById('hd');(function run(){hd.innerHTML = ihd.style.width = i + "%"if(++i<=100){setTimeout(run,20)}})()}handle()</script>
</body>
</html>

http://www.ppmy.cn/server/166966.html

相关文章

YOLOv11实战海洋动物图像识别

本文采用YOLOv11作为核心算法框架&#xff0c;结合PyQt5构建用户界面&#xff0c;使用Python3进行开发。YOLOv11以其高效的特征提取能力&#xff0c;在多个图像分类任务中展现出卓越性能。本研究针对5种海洋动物数据集进行训练和优化&#xff0c;该数据集包含丰富的海洋动物图像…

点云数据聚类处理流程

点云数据聚类处理流程 点云数据聚类处理是将点云数据中的点按照相似性划分为不同的组&#xff08;簇&#xff09;的过程&#xff0c;在目标识别、场景分析等领域有广泛应用。以下是一个通用的点云数据聚类处理流程&#xff1a; 1. 数据获取 激光雷达采集&#xff1a;利用激光…

Flutter 双屏双引擎通信插件加入 GitCode:解锁双屏开发新潜能

在双屏设备应用场景日益丰富的当下&#xff0c;移动应用开发领域迎来了新的机遇与挑战。如何高效利用双屏设备优势&#xff0c;为用户打造更优质的交互体验&#xff0c;成为开发者们关注的焦点。近日&#xff0c;一款名为 Flutter 双屏双引擎通信插件的创新项目正式入驻 GitCod…

嵌入式硬件篇---OpenMV串口流和缓冲区

文章目录 前言流和缓冲区1. 流&#xff08;Stream&#xff09;的含义定义在OpenMV中的体现 2. 缓冲区&#xff08;Buffer&#xff09;的含义定义在OpenMV中的实现 3. 流与缓冲区的协同工作数据发送流程数据接收流程 4. 缓冲区管理的关键方法发送缓冲区管理接收缓冲区管理示例代…

Android笔记【snippet】

一、 6、Card及ConstraintLayout线性布局 //定义单独的机器人单独一行的卡片 Composable fun RobotCard(robot: Robot,navController:NavController){Card(modifier Modifier.fillMaxWidth().wrapContentHeight().padding(5.dp),colors CardDefaults.elevatedCardColors(co…

学习 URL 传参中哪些字符是支持的,哪些是不支持的

URL 的结构 URL 由多个部分组成&#xff0c;包括协议、域名、路径、查询参数和片段标识符&#xff0c;其中&#xff0c;查询参数部分就是问号后面的内容&#xff0c;这部分使用键值对&#xff0c;中间用 & 分隔。比如&#xff0c;http://example.com/path?key1value1&…

剑指offer第2版:搜索算法(二分/DFS/BFS)

查找本质就是排除的过程&#xff0c;不外乎顺序查找、二分查找、哈希查找、二叉排序树查找、DFS/BFS查找 一、p39-JZ3 找出数组中重复的数字&#xff08;利用特性&#xff09; 数组中重复的数字_牛客题霸_牛客网 方法1&#xff1a;全部排序再进行逐个扫描找重复。 时间复杂…

VPN服务器是怎么把数据转发到外网的?

1. 数据到达OpenVPN服务器 客户端发送数据&#xff1a;客户端设备&#xff08;如电脑、手机&#xff09;将数据&#xff08;如网页请求、文件传输等&#xff09;封装在加密的隧道中&#xff0c;通过互联网发送到OpenVPN服务器。 服务器接收数据&#xff1a;OpenVPN服务器收到客…