2013-05-30 117 views
-2

我有這個JavaScript的for循環:運行腳本時for循環準備

for (var i = 0; i < arr.length; i++) { 
    $.get(arr[i]).done(function (html) { 
     $(".main").append($(html).find(".section")); 
     $('.section:not(:first) .blog-items-list').remove(); 
    }); 
} 

當for循環已準備就緒。然後我想啓動其他腳本/功能。我怎樣才能做到這一點?當我打字,功能。這不起作用。

+11

你所說的「當for循環是準備好了」是什麼意思? – cfs

+2

難道你只是將你的代碼放在一個'function loop(){}'中並且在你需要時調用它嗎? –

+1

「當我打字,功能,這是行不通的。」 ??? –

回答

4
var d = []; 
for (var i = 0; i < arr.length; i++) { 
    d.push($.get(arr[i]).done(function (html) { 
     $(".main").append($(html).find(".section")); 
     $('.section:not(:first) .blog-items-list').remove(); 
    })); 
} 

$.when.apply($, d).then(function() { 
    // all get requests have finished 
}); 

$.when()是一個jQuery函數,它等待所有傳遞的延遲都解析完畢。只要它不接受deferreds但多個參數的數組,而不是 - 我們使用.apply()

1
var count = arr.length; 
for (var i = 0; i < arr.length; i++) { 
    $.get(arr[i]).done(function (html) { 
     $(".main").append($(html).find(".section")); 
     $('.section:not(:first) .blog-items-list').remove(); 
     if(--count === 0) 
      next(); 
    }); 
} 

function next(){ 
    // after all done completed 
} 
+0

我需要去睡覺不要做愚蠢的評論:-)(從我+1) – zerkms

+0

@zerkms晚安然後:)你的解決方案更好,我認爲 – karaxuna