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