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的异步方法

Farfalle
Farfalle

Farfalle.dev 是一个开源的 AI 搜索引擎,定位为 Perplexity 的自托管替代品。

下载

使用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'需要替换成你的实际图片路径。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
java 字符串格式化
java 字符串格式化

本专题整合了java如何进行字符串格式化相关教程、使用解析、方法详解等等内容。阅读专题下面的文章了解更多详细教程。

0

2026.01.30

python 字符串格式化
python 字符串格式化

本专题整合了python字符串格式化教程、实践、方法、进阶等等相关内容,阅读专题下面的文章了解更多详细操作。

0

2026.01.30

java入门学习合集
java入门学习合集

本专题整合了java入门学习指南、初学者项目实战、入门到精通等等内容,阅读专题下面的文章了解更多详细学习方法。

19

2026.01.29

java配置环境变量教程合集
java配置环境变量教程合集

本专题整合了java配置环境变量设置、步骤、安装jdk、避免冲突等等相关内容,阅读专题下面的文章了解更多详细操作。

15

2026.01.29

java成品学习网站推荐大全
java成品学习网站推荐大全

本专题整合了java成品网站、在线成品网站源码、源码入口等等相关内容,阅读专题下面的文章了解更多详细推荐内容。

17

2026.01.29

Java字符串处理使用教程合集
Java字符串处理使用教程合集

本专题整合了Java字符串截取、处理、使用、实战等等教程内容,阅读专题下面的文章了解详细操作教程。

2

2026.01.29

Java空对象相关教程合集
Java空对象相关教程合集

本专题整合了Java空对象相关教程,阅读专题下面的文章了解更多详细内容。

6

2026.01.29

clawdbot ai使用教程 保姆级clawdbot部署安装手册
clawdbot ai使用教程 保姆级clawdbot部署安装手册

Clawdbot是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。

38

2026.01.29

clawdbot龙虾机器人官网入口 clawdbot ai官方网站地址
clawdbot龙虾机器人官网入口 clawdbot ai官方网站地址

clawdbot龙虾机器人官网入口:https://clawd.bot/,clawdbot ai是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。

22

2026.01.29

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
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号