图片加载完成后如何执行后续代码?

碧海醫心
发布: 2025-02-19 20:34:00
原创
300人浏览过

图片加载完成后执行后续代码的两种方法:计时器和async/await

本文介绍两种方法,确保在所有图片加载完成后再执行后续代码。第一种方法使用计时器轮询图片加载状态;第二种方法利用async/await处理异步操作,使代码更简洁易读。

图片加载完成后如何执行后续代码?

方法一:使用计时器

此方法通过计时器定期检查图片是否加载完成。 我们需要一个计数器 img_number 追踪未加载图片的数量。每张图片的 onload 事件触发后,计数器减一。当计数器为零时,所有图片加载完成,执行后续代码。这种方法简单易懂,但效率相对较低,因为需要不断轮询。

方法二:使用async/await

async/await 提供更优雅的异步操作处理方式。 img.onload 事件处理程序内使用Promise,await 关键字暂停执行,直到图片加载完成(Promise resolve)。所有图片加载完成后,await 释放执行权,执行后续代码。这种方法更简洁,也更符合现代JavaScript的异步编程范式。

以下是一个使用async/await的代码示例,假设answer_img是一个包含图片对象的数组:

async function draw() {
  let img_height = 0;
  let answer_height = 0;

  if (answer_img.length > 0) {
    const loadPromises = answer_img.map(imgObj => {
      return new Promise((resolve) => {
        const img = new Image();
        img.src = imgObj.src;
        img.onload = () => {
          img_height += img.height;
          answer_height += img.height;
          resolve();
        };
      });
    });
    await Promise.all(loadPromises); // 等待所有图片加载完成
  }

  // 所有图片加载完成后执行的代码
  // 现在可以使用 img_height 和 answer_height
  console.log("All images loaded. Total height:", img_height);
  // ... your code here ...
  return {img_height, answer_height}; // 返回图片高度信息
}

draw().then((result) => {
  // 获取draw函数返回的图片高度信息
  console.log("Image height from draw function:", result.img_height);
});
登录后复制

这个例子中,draw 函数返回一个 Promise,包含最终的图片高度信息。 外部使用 .then() 方法获取结果。 选择哪种方法取决于项目需求和个人偏好,但对于更复杂的异步操作,async/await 通常是更好的选择。

以上就是图片加载完成后如何执行后续代码?的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

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