作者mmis1000 (秋月恋枫)
看板Ajax
标题[问题] 如何判断图片全部读取完成?
时间Tue Dec 17 20:21:37 2013
如题,这两天看到有关canvas的文章,
想说可以试着拿来做个小游戏
所以我试着用drawImage绘制图片到画布上
但有一个问题是
必须要等图片读取完,才有办法呼叫drawImage绘制图片到canvas上
所以我把绘制图片函数挂在Image()物件的onload上
到这边都还能正常运作
但当我试图加入第二个图片时,问题就来了,
因为onload是非同步事件,
所以添加事件跟读取完成,
呼叫事件的顺序不一定是一样的
结果有时原本应该要被画在上面的图案,反而跑到下面去
http://jsfiddle.net/mmis1000/7bJHP/6/
(ie不支援跨域请求,会看不到)
造成显示的结果跟预期不一样
所以我想问的是,除了自己刻以外,
有没有什麽现成的函数库,
可以做到,
当指定追踪的物件都读取完成时,
呼叫特定的函数,这样的功能?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.116.130.56
1F:推 Fantasywind:做个 Counter 不就好? 12/17 20:39
2F:→ mmis1000:但为每个元素写一次函数,似乎不太值得,手刻counter 12/17 20:44
3F:→ mmis1000:也不好看,所以才问说有没有什麽比较漂亮的写法 12/17 20:45
4F:→ TonyQ:找找 promise,when 12/17 20:54
5F:推 Fantasywind:每个request互相不知道存在 必须有counter沟通 12/17 20:55
6F:→ TonyQ:jQuery 的话可以看看 Deferred 12/17 20:55
7F:→ Fantasywind:或是用promise的方法 但是效能会差点 12/17 20:55
8F:→ TonyQ:我觉得 promise 的问题不在校能,主要在量大时记忆体吃重。 12/17 21:05
10F:→ danny8376:上面回答完了www 12/17 21:20
13F:→ mmis1000:再问一个问题,如果元素读取失败,有办法触发特定事件吗 12/18 00:45
14F:→ danny8376:onerror 12/18 01:28