首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

for循环创建Image(),但获取宽度和高度失败

for循环创建Image(),但获取宽度和高度失败是因为在循环中创建的Image对象还没有加载完成,所以无法立即获取到宽度和高度信息。这是因为Image对象的加载是异步的过程,需要等待图片加载完成后才能获取到宽度和高度。

解决这个问题的方法是使用回调函数或Promise来确保在获取宽度和高度之前等待图片加载完成。以下是一个示例代码:

代码语言:javascript
复制
function loadImage(url) {
  return new Promise((resolve, reject) => {
    const img = new Image();
    img.onload = function() {
      resolve(img);
    };
    img.onerror = function() {
      reject(new Error('Failed to load image'));
    };
    img.src = url;
  });
}

async function getImageSize(url) {
  try {
    const img = await loadImage(url);
    const width = img.width;
    const height = img.height;
    console.log('Width:', width);
    console.log('Height:', height);
  } catch (error) {
    console.error(error);
  }
}

// 使用示例
for (let i = 0; i < 10; i++) {
  const imageUrl = `https://example.com/image${i}.jpg`;
  getImageSize(imageUrl);
}

在上述代码中,loadImage函数返回一个Promise对象,当图片加载成功时,Promise会被resolve,并将加载完成的Image对象作为参数传递给resolve函数。如果加载失败,则Promise会被reject,并传递一个错误对象。

getImageSize函数使用async/await语法来等待图片加载完成,并获取宽度和高度信息。在循环中调用getImageSize函数来获取每个图片的宽度和高度。

这样,通过使用Promise和async/await,我们可以确保在获取宽度和高度之前等待图片加载完成,从而解决获取宽度和高度失败的问题。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Android开发笔记(十二)测量尺寸与下拉刷新

    大家知道,自定义视图的目的就是要在屏幕上显示期望的图案,那在绘制图案之前,我们得先知道这个图案的尺寸(如宽多少高多少)。 一般在xml中给控件的宽和高有三种赋值方式: 1、MATCH_PARENT : 表示与上级控件一样大小; 2、WRAP_CONTENT : 表示按照自身尺寸进行适配; 3、直接赋给具体的dp值; 方式3有具体的数值,不用计算就知道了。方式1与上级控件保持一致,因此只要系统依次丈量控件大小,这也不是什么难事。麻烦的是方式2,因为下级控件每个尺寸都有可能不确定,比如文本控件得看文字大小、行数,图像控件得看图片大小、拉伸情况,所以大家想想,如果这时候我们自己去一个个算过去(下级控件的个数也不确定),这算得头都大了。 幸亏Android提供了onMeasure函数自动完成了上述计算过程,通常情况下我们的自定义控件也无需重写该方法,除了一些特殊的情况。当然本文讲的便是实际开发中遇到的特殊情况,否则就不用浪费口舌了。

    04
    领券