微信小程序canvas画布如何解决在for循环绘制图像显示不全的问题

如下所示,在for循环中绘制图像,由于onload函数加载图像是异步执行,会导致显示不全所有图片的问题。

  for(var a=0;a<2;++a){       
    var img = canvas.createImage()
    img.src = product_image[items[a]]
    img.onload = ()=>{
      ctx.drawImage(el,0,h,image_w,image_h)
    }                
  }

可以将异步执行过程通过promise变为同步执行,但此方法相对复杂。

可以在第一个for循环中保存img对象,然后单独增加一个for循环加载图片,如下所示:

  var image = []
  for(var a=0;a<2;++a){       
    var img = canvas.createImage()
    img.src = product_image[items[a]]
    image[a] = img               
  }
  image.forEach(function(el,index){
	var h = index*pr_height+pr_h_margin+p_name_size+sp_el_h
	el.onload = ()=>{
		ctx.drawImage(el,0,h,image_w,image_h)
	}
  });

更多微信小程序内容欢迎关注博主和订阅专栏。

有相关业务可以联系博主。

相关推荐

  1. 程序canvas画布清晰解决方法

    2024-02-01 10:36:01       20 阅读
  2. 程序canvas画布自由绘制/画笔功能实现

    2024-02-01 10:36:01       37 阅读
  3. 程序canvas画布绘制文字自动换行

    2024-02-01 10:36:01       44 阅读
  4. 程序canvas画布图片转pdf文件

    2024-02-01 10:36:01       37 阅读
  5. 程序for循环嵌套

    2024-02-01 10:36:01       25 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-01 10:36:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-01 10:36:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-01 10:36:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-01 10:36:01       20 阅读

热门阅读

  1. 第二章 Redis介绍及安装

    2024-02-01 10:36:01       35 阅读
  2. 人工智能在现代科技中的应用和未来发展趋势

    2024-02-01 10:36:01       41 阅读
  3. vivado 时钟规划

    2024-02-01 10:36:01       34 阅读
  4. C语言-算法-搜索剪枝与记忆化搜索

    2024-02-01 10:36:01       30 阅读
  5. 【无标题】

    2024-02-01 10:36:01       29 阅读
  6. cx_oracle连接oracle的us7ascii数据集乱码问题

    2024-02-01 10:36:01       31 阅读
  7. datax oracle->pg库 迁移表

    2024-02-01 10:36:01       35 阅读