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

2021-08-01 10:18:38 +08:00
 zxCoder
1231 次点击
所在节点    问与答
6 条回复
Quarter
2021-08-01 10:25:24 +08:00
判断图片加载完成,基本还是 onload
xiangyuecn
2021-08-01 10:36:03 +08:00
for 里面一次性创建 100 个 image,onload 、onerror 计数到 100 即完成加载,还他娘的是并发的🐶
SoloCompany
2021-08-01 11:30:43 +08:00
const load = img => new Promise((resolve, reject) => img.onload(resolve) & img.onerror(reject));
await Promise.all(imgs.map(load))
0o0o0o0
2021-08-01 11:34:53 +08:00
设置一个 map <图片,状态>,包含所有图片,每张图片加载完都设置此图片状态为完成,然后每次完成一个图片加载都检查是否全部完成,如果全部完成就画 canvas
maplerecall
2021-08-01 14:09:48 +08:00
你需要的不是同步,而是有个能确保所有图片都加载完的方法,上边的几种方法都是这个原理,理解了就容易写了。
Danswerme
2021-08-01 23:10:29 +08:00
三楼的方法正解,放在 Promise.all 后面就可以确保所有图片都加载完成了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/792954

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX