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

devtools/2025/2/12 13:29:37/

异步加载图片体验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/devtools/158215.html

相关文章

C#常用集合优缺点对比

先上结论&#xff1a; 在C#中&#xff0c;链表、一维数组、字典、List<T>和ArrayList是常见的数据集合类型&#xff0c;它们各有优缺点&#xff0c;适用于不同的场景。以下是它们的比较&#xff1a; 1. 一维数组 (T[]) 优点&#xff1a; 性能高&#xff1a;数组在内存中…

2025.2.10 每日学习记录3:技术报告只差相关工作+补实验

0.近期主任务线 1.完成小论文准备 目标是3月份完成实验点1的全部实验和论文。 2.准备教资笔试 打算留个十多天左右&#xff0c;一次性备考笔试的三个科目 1.实习申请技术准备&#xff1a;微调、Agent、RAG 据央视财经&#xff0c;数据显示&#xff0c;截至2024年12月…

WebSocket与Socket.io的区别

文章目录 引言一、WebSocket&#xff1a;原生的实时通信协议&#xff08;一&#xff09;WebSocket 是什么&#xff08;二&#xff09;WebSocket 的工作原理&#xff08;三&#xff09;WebSocket 的使用方法&#xff08;四&#xff09;WebSocket 的优势&#xff08;五&#xff0…

如何在Node.js中使用中间件处理请求

Node.js作为一种基于事件驱动、非阻塞I/O模型的运行环境&#xff0c;广泛用于构建高性能的Web应用。在Node.js中&#xff0c;处理中间件是处理HTTP请求和响应的一个常见方式&#xff0c;特别是在使用Express框架时&#xff0c;中间件扮演着至关重要的角色。本文将介绍如何在Nod…

hyperf知识问题汇总

1、简单说下 hyperf&#xff08;什么是 hyperf&#xff09; 答&#xff1a;hyperf 是一个依赖swoole扩展的 php 开源开发框架&#xff0c;它由黄朝辉团队设计创建维护&#xff0c;具备简洁而强大的组件和超强的并发性能&#xff0c;而且还支持微服务架构&#xff0c;例如&…

Git 安全与权限管理

引言 在当今软件开发的宏大版图中&#xff0c;Git 无疑占据着举足轻重的地位。作为一款分布式版本控制系统&#xff0c;Git 以其卓越的特性&#xff0c;为开发者们搭建了高效协作与代码管理的坚实桥梁。它赋予了开发者极大的自主性&#xff0c;即便在离线状态下&#xff0c;也…

grid网格布局中实现父盒子比较大,子元素顶部对齐

css布局中使用grid布局&#xff0c;父盒子的高度是1000px&#xff0c;每个子元素高度是100px&#xff0c;现在有三个子元素&#xff0c;如何实现每行显示两个&#xff0c;并且子元素都顶部对齐&#xff1f;如图所示的效果。 grid布局文档&#xff1a;grid - CSS&#xff1a;层…

IPD项目管理是什么?

IPD项目管理&#xff0c;即整合项目交付管理&#xff0c;是一种创新的管理方式、强调团队协作、优化设计和施工过程的方法。这种管理模式的核心是整合所有项目参与者的专业技能和知识&#xff0c;从项目初始阶段就开始共同合作&#xff0c;以实现项目目标。它特别强调所有参与者…