2015-02-06 50 views
-1

後如何爲循環延遲,直到功能「some_multi_ajax_function()」如何執行第二循環迭代改變全局變量(exe_counter爲0)?AJAX做

for (i = 0; i < some_data_list.length; i++) { 
    exe_counter=1; 
    if(i>0 && exe_counter != 0){ 
      delay{ 
       // delay for loop until some_multi_ajax_function() set exe_counter = 0 
       // do not execute second iteration 
      } 
     }else{ 
      data = some_data_list[i]; 
      // Many ajax posts will be executed here. In the end exe_counter will be set to 0; 
      some_multi_ajax_function(data); 
     } 
} 

function some_multi_ajax_function(data){ 
    $.ajax({ 
      ... 
     }.done(function(d) { 
      // here it could be used another ajax function 
      exe_counter = 0; 
     }); 
} 
+0

你的腳本應該做的是什麼呢? – 2015-02-06 14:20:54

+0

通過座標搜索廣告,協調從谷歌API獲取。它可以掃描10次 – 2015-02-06 14:47:12

回答

3

您採取了錯誤的解決方案的問題。

如果你想等待一個Ajax動作,你必須只使用回調。

然後遞歸你應該做的:

function some_multi_ajax_function(data, i) { 
    $.ajax({ 
     ... 
    }.done(function(d) { 
     if (i < data.length) { 
      some_multi_ajax_function(data, i + 1); 
     } else { 
      // Do something in the end 
     } 
    }); 
} 

some_multi_ajax_function(some_data_list, 0); 
+0

我不能這樣做,因爲some_multi_ajax_function()幾次調用另一個Ajax函數 – 2015-02-09 13:50:15

+0

所以,只需通過添加此選項使您的調用同步即可:async:false – Bang 2015-02-09 14:58:20