我正在使用jquery中的每個函數,它看起來像它正在移動到一個函數,需要每個循環的結果之前,他們完成...在這裏是代碼等待。每個完成之前繼續(jQuery)
$.each(array, function(index, value) {
prob[value] = get_probs(value);
});
sim(prob);
function sim(prob){
//alert ("test");
alert (prob[value]);
new_sim(prob[value]);
}
如果我取消註釋警報(「測試」);它顯然會顯示一條警報,然後它會在第二條警報中顯示正確的數字,但是,如果我保留原樣,它會返回未定義狀態,我只能假設它是因爲它已經進入了SIM功能而沒有完成每個循環
是否有無論如何我可以讓sim函數等待運行,直到每個循環完成?
注意:有更多的代碼比這個,但我試圖簡化......讓我知道如果有什麼不清楚。我最終會運行一系列的SIM功能,這就是爲什麼我想這樣設置它
感謝您的任何幫助!
我假設'get_probs'或者其他一些代碼正在發出一個AJAX請求,或者做一些其他的異步操作。 – 2012-04-11 01:32:13
這是正確的。我只是將它切換到同步運行(async:false),它看起來正在工作......有沒有其他方式來做到這一點,所以我不鎖定瀏覽器一兩秒? – 2012-04-11 06:33:48
無論代碼依賴於AJAX響應,都應該從'success:'回調中執行。一種選擇是*傳遞函數作爲'get_probs' *的參數(假設這是AJAX所在的位置)*,然後在回調中調用該函數,並將響應傳遞給它。否則,您可以將代碼硬編碼到回調中,而不是傳遞一個函數。 – 2012-04-11 14:33:58