0

0

如何正确地在img.onload事件中使用计时器和async/await获取图像高度并返回数据?

DDD

DDD

发布时间:2025-02-19 21:08:31

|

275人浏览过

|

来源于php中文网

原创

如何正确地在img.onload事件中使用计时器和async/await获取图像高度并返回数据?

确保img.onload事件顺序执行的策略

本文探讨两种方法,确保在img.onload事件完成后获取图像高度并返回数据:使用setTimeout的计时器方法和使用async/await的异步方法。

方法一:使用setTimeout的计时器方法

为了在计时器中正确返回数据,我们需要利用setTimeout函数,将数据处理和返回操作延迟到img.onload事件之后执行:

// 回调函数,处理图像高度并创建DOM元素
function callback(imgHeight) {
  const div = document.createElement("div");
  div.style.height = imgHeight + "px";
  return div;
}

// 获取图像高度,并使用setTimeout延迟返回数据
function getImageHeight(img) {
  return new Promise((resolve) => {
    img.onload = () => {
      setTimeout(() => {
        resolve(callback(img.height)); // 将处理后的DOM元素resolve
      }, 0);
    };
  });
}

// 示例用法
const img = new Image();
img.src = 'image.jpg'; // 替换为你的图片地址

getImageHeight(img)
  .then(div => {
    document.body.appendChild(div); // 将创建的div添加到页面
  });

方法二:使用async/await的异步方法

Figstack
Figstack

一个基于 Web 的AI代码伴侣工具,可以帮助跨不同编程语言管理和解释代码。

下载

使用async/await可以更清晰地处理异步操作,在img.onload回调中使用resolve函数返回图像高度:

async function getImageHeightAsync(img) {
  return new Promise((resolve) => {
    img.onload = () => {
      resolve(img.height);
    };
  });
}

async function processImage() {
  const img = new Image();
  img.src = 'image.jpg'; // 替换为你的图片地址

  const imgHeight = await getImageHeightAsync(img);
  const div = document.createElement("div");
  div.style.height = imgHeight + "px";
  document.body.appendChild(div);
}

processImage();

两种方法都确保了在图像加载完成后再获取高度并返回数据,避免了由于异步操作导致的竞态条件。async/await方法在代码可读性和维护性方面略胜一筹,但两种方法都能达到目的。 选择哪种方法取决于你的项目和个人偏好。 请注意,代码中'image.jpg'需要替换成你的实际图片路径。

相关专题

更多
高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

43

2026.01.16

全民K歌得高分教程大全
全民K歌得高分教程大全

本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

84

2026.01.16

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

24

2026.01.16

java数据库连接教程大全
java数据库连接教程大全

本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

35

2026.01.15

Java音频处理教程汇总
Java音频处理教程汇总

本专题整合了java音频处理教程大全,阅读专题下面的文章了解更多详细内容。

16

2026.01.15

windows查看wifi密码教程大全
windows查看wifi密码教程大全

本专题整合了windows查看wifi密码教程大全,阅读专题下面的文章了解更多详细内容。

56

2026.01.15

浏览器缓存清理方法汇总
浏览器缓存清理方法汇总

本专题整合了浏览器缓存清理教程汇总,阅读专题下面的文章了解更多详细内容。

16

2026.01.15

ps图片相关教程汇总
ps图片相关教程汇总

本专题整合了ps图片设置相关教程合集,阅读专题下面的文章了解更多详细内容。

9

2026.01.15

ppt一键生成相关合集
ppt一键生成相关合集

本专题整合了ppt一键生成相关教程汇总,阅读专题下面的的文章了解更多详细内容。

26

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
10分钟--Midjourney创作自己的漫画
10分钟--Midjourney创作自己的漫画

共1课时 | 0.1万人学习

Midjourney 关键词系列整合
Midjourney 关键词系列整合

共13课时 | 0.9万人学习

AI绘画教程
AI绘画教程

共2课时 | 0.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号