V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
zxCoder
V2EX  ›  问与答

js 加载图片的 onload,能把异步回调函数改成同步的吗,因为想要加载多张图片然后再通过 canvas 画图,用 onload 要套好多层

  •  
  •   zxCoder · Aug 1, 2021 · 1690 views
    This topic created in 1731 days ago, the information mentioned may be changed or developed.
    Quarter
        1
    Quarter  
       Aug 1, 2021 via iPhone
    判断图片加载完成,基本还是 onload
    xiangyuecn
        2
    xiangyuecn  
       Aug 1, 2021
    for 里面一次性创建 100 个 image,onload 、onerror 计数到 100 即完成加载,还他娘的是并发的🐶
    SoloCompany
        3
    SoloCompany  
       Aug 1, 2021
    const load = img => new Promise((resolve, reject) => img.onload(resolve) & img.onerror(reject));
    await Promise.all(imgs.map(load))
    0o0o0o0
        4
    0o0o0o0  
       Aug 1, 2021
    设置一个 map <图片,状态>,包含所有图片,每张图片加载完都设置此图片状态为完成,然后每次完成一个图片加载都检查是否全部完成,如果全部完成就画 canvas
    maplerecall
        5
    maplerecall  
       Aug 1, 2021 via Android
    你需要的不是同步,而是有个能确保所有图片都加载完的方法,上边的几种方法都是这个原理,理解了就容易写了。
    Danswerme
        6
    Danswerme  
       Aug 1, 2021 via iPhone
    三楼的方法正解,放在 Promise.all 后面就可以确保所有图片都加载完成了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5654 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 49ms · UTC 07:43 · PVG 15:43 · LAX 00:43 · JFK 03:43
    ♥ Do have faith in what you're doing.