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

Promise

image-20250801171901472

image-20250801172006501

image-20250801172232790

代码解析:

javascript复制编辑
const imgAddress = 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1606645702812&di=2fcf59d8';const imgPromise = (url) => {return new Promise((resolve, reject) => {const img = new Image();  // 创建新的图片对象img.src = url;  // 设置图片源img.onload = () => {  // 图片加载成功resolve(img);  // 调用 resolve 返回图片对象};img.onerror = () => {  // 图片加载失败reject(new Error('图片有误'));  // 调用 reject 返回错误};});
};// 调用 imgPromise 并传入图片地址
imgPromise(imgAddress).then(img => {document.body.appendChild(img);  // 图片加载成功,插入图片到页面中}).catch(err => {document.body.innerHTML = err;  // 图片加载失败,输出错误信息});

image-20250801165535046

HTML 部分与 JavaScript 部分

从你提供的图片来看,HTML 部分和 JavaScript 部分分别负责页面结构和事件处理。下面我将分开讲解 HTML 和 JavaScript 的部分,并提供完整示例代码。


HTML 部分

<!DOCTYPE html>
<html lang="ens"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>AJAX 图片加载示例</title>
</head><body><!-- 按钮,点击后触发 AJAX 请求 --><a href="#" id="fetch-button">点击获取蛋黄师傅课程</a><!-- 显示图片的区域 --><img id="image-display" src="" alt="点击获取图片" style="margin-top: 20px; width: 300px; height: 200px;"><script src="index.js"></script>  <!-- 引入 JavaScript 文件 -->
</body></html>
HTML 部分的说明
  1. <a> 标签:用于触发图片的加载操作。用户点击后会发起 AJAX 请求。
  2. <img> 标签:用于显示加载的图片。初始 src 为空,待加载完图片后,JavaScript 会动态更新该 src
  3. <script src="index.js">:引入外部 JavaScript 文件 index.js,这个文件会处理 AJAX 请求和图片更新。

JavaScript 部分 (index.js)

// 获取按钮和图片元素
const button = document.querySelector('#fetch-button');
const image = document.querySelector('#image-display');// 定义异步函数,封装 AJAX 请求
function ajaxPromise() {let promise = new Promise((resolve, reject) => {let xhr = new XMLHttpRequest();  // 创建 XMLHttpRequest 对象xhr.open('GET', 'egg.gif', true);  // 设置请求方法和 URLxhr.onreadystatechange = () => {if (xhr.readyState === 4) {  // 请求完成if (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {resolve(xhr.responseURL);  // 请求成功,返回图片 URL} else {reject(new Error(xhr.statusText));  // 请求失败,返回错误信息}}};xhr.send(null);  // 发送请求});return promise;
}// 监听按钮点击事件
button.addEventListener('click', () => {ajaxPromise().then(responseURL => {  // 请求成功后,更新图片的源image.src = responseURL;}).catch(statusText => {  // 请求失败后,打印错误信息console.log(statusText);});
});
JavaScript 部分的说明
  1. 获取 DOM 元素
    • button 用来存储按钮元素,通过 document.querySelector 获取。
    • image 用来存储图片元素,获取后可以动态更新图片的 src
  2. ajaxPromise 函数
    • 这是一个使用 Promise 封装的异步函数,发送一个 GET 请求来加载 egg.gif 图片。
    • 如果请求成功并且状态码为 200304,就会调用 resolve() 返回图片的 URL (xhr.responseURL)。
    • 如果请求失败,调用 reject() 返回错误信息。
  3. 事件监听器
    • button 添加点击事件监听器,当点击按钮时触发 ajaxPromise()
    • 如果 ajaxPromise() 成功,回调函数会将返回的图片 URL 设置为图片元素的 src,显示图片。
    • 如果请求失败,错误信息会打印在控制台。

完整示例说明

  1. 页面结构:页面包含一个按钮和一个用于展示图片的 <img> 标签。
  2. 异步请求:点击按钮s会发起一个异步请求(通过 XMLHttpRequest),获取图片并动态更新页面中的图片。
  3. Promise 用法:通过 Promise 来处理异步请求的成功与失败,保证代码的简洁和易维护。
  4. 图像展示:当图片加载完成后,图片 src 被更新,页面上的图片元素也会随之改变,显示新加载的图片。

总结

  • HTML:负责页面的结构和用户交互。
  • JavaScript:负责发送 AJAX 请求,处理响应并更新页面。

这种方法使得你可以通过异步请求加载图片,而无需刷新页面,从而提供更好的用户体验。

http://www.xdnf.cn/news/17116.html

相关文章:

  • 【JS-7-ajax】AJAX技术:现代Web开发的异步通信核心
  • Python包管理新利器:uv全面解析与Conda对比指南
  • 一文读懂:什么是CLIP
  • Redis集群核心原理与实战解析
  • C语言的数组与字符串练习题2
  • 【前端开发】四. JS内置函数
  • 5G毫米波射频前端测试:OTA暗室与波束成形性能验证
  • RuoYi-Cloud 微服务本地部署详细流程实录(IDEA + 本地 Windows 环境)
  • 商派小程序商城(小程序/官网/APP···)的范式跃迁与增长再想象
  • 参考线程池构建一个高性能、配置驱动的Docker容器池
  • 基于Simulink/MWORKS的文字与开关量混合传输系统设计
  • [LVGL] 部件lv_obj | 样式lv_style | LV_PART_ | LV_STATE_
  • Cartographer安装测试与模块开发(四)--Cartographer纯定位思路
  • Linux基本指令:掌握系统操作的钥匙
  • 浅谈RNN被Transformer 取代的必然性
  • 面试题:基础的sql命令
  • 在LLM小型化趋势下,AI Infra需要做出哪些相应调整?
  • 【完整源码+数据集+部署教程】爬行动物异常检测系统源码和数据集:改进yolo11-GhostDynamicConv
  • JavaScript 中 var、let 和 const 的区别与使用场景
  • TCP的三次握手和四次挥手实现过程。以及为什么需要三次握手?四次挥手?
  • [GESP202309 四级] 2023年9月GESP C++四级上机题题解,附带讲解视频!
  • Python爬虫08_Requests聚焦批量爬取图片
  • layernorm backward CUDA优化分析
  • linux nfs+autofs
  • mq_unlink系统调用及示例
  • Java开发时出现的问题---并发与资源管理深层问题
  • 在具身智能火热加持下,看 2025 年机器人学术年会中的热点主题。PNP机器人展示力控、灵巧手捕捉等案例。
  • Android Studio下载及安装配置
  • 计算机视觉的四项基本任务辨析
  • Android audio之 AudioDeviceInventory