Re: [问题] 延后执行的问题

楼主: dianwu (dian)   2015-08-22 05:06:42
我会这样改
※ 引述《m2251000 (akakaze 二兵 >)》之铭言:
: 一个小程式,还请大大们看一下程式码
: var array = [];
var imgReady =0;
: for (n in m) {
: var img = new Image();
: var i = m[n];
: img.onload = function () {
: //图片读取好后进行一些处理再return回来
: var t = doImg(this);
: i.forEach(function(p){
: //将图片及资讯push进array
: array.push({
: img : t,
: p1 : p,
: p2 : [p[0] + t.width, p[1] + t.height],
: p3 : t.pos[1] + p[1]
: });
: });
imgReady++;
if (imgReady === m.length) dosomthing(array);
: };
: img.src = './img/item/' + n;
: }
: //对array做处理
: dosomthing(array);
: 以上
: 在最后处理array的时后,array里面一直没有东西
: 我知道是因为图片读取延迟的关系导至最后的处理比push还要早执行
: 但是我不知道能将最后执行的部分放在哪里才能让程式能正常的运作
: 想请叫一下各位大大们
: 要怎么样确保最后的处理一定会在图片读取完成之后呢?
然后不建议在循环中直接宣告 function 因为 scope 容易混乱。
应该是引用外部 function 比较好
作者: m2251000 (akakaze 二兵 >)   2015-08-22 23:01:00
谢谢大大解答,最后一段的建议我倒是真的没注意到,感谢

Links booklink

Contact Us: admin [ a t ] ucptt.com