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

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

javascript 复制代码
  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循环加载图片,如下所示:

javascript 复制代码
  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)
	}
  });

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

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

相关推荐
樊南6 小时前
【esp32-uniapp】uniapp小程序篇02——引入组件库
小程序·uview·sass·scss·wechat·uiewplus·colorui
计算机-秋大田14 小时前
基于微信的原创音乐小程序的设计与实现(LW+源码+讲解)
java·开发语言·后端·微信·小程序·课程设计
计算机-秋大田20 小时前
基于微信小程序的校园二手交易市场的设计与实现(LW+源码+讲解)
java·后端·微信小程序·小程序·课程设计
丁总学Java20 小时前
微信小程序中常见的 跳转方式 及其特点的表格总结(wx.navigateTo 适合需要返回上一页的场景)
微信小程序·小程序
西之可乐20 小时前
微信小程序date picker的一些说明
微信小程序
计算机-秋大田21 小时前
基于微信阅读网站小程序的设计与实现(LW+源码+讲解)
spring boot·后端·微信·微信小程序·小程序·课程设计
向明天乄21 小时前
小程序 uniapp 地图 自定义内容呈现,获取中心点,获取对角经纬度,首次获取对角经纬度
小程序·uni-app
说私域1 天前
付费会员制与开源AI智能名片S2B2C商城小程序在现代营销中的应用
人工智能·小程序·开源
计算机学姐1 天前
基于微信小程序的网上订餐管理系统
java·vue.js·spring boot·mysql·微信小程序·小程序·intellij-idea
m0_748239471 天前
微信小程序-Docker+Nginx环境配置业务域名验证文件
nginx·docker·微信小程序