javascript - 如何在for循环中运行ajax后调用函数

标签 javascript jquery ajax

<分区>

Possible Duplicate:
Multiple ajax calls inside a each() function.. then do something once ALL of them are finished?

在 for 循环中运行 ajax 后如何执行函数。这里的例子我让这个 ajax 循环运行,

for (var countDevice = 0; countDevice<32; countDevice++){
  var dataString="modbus="+(countDevice+1)+"_"+newDate+".xml";
  $.ajax({
    type: "POST",
    url: "CalculateTable",
    data: dataString,
    dataType: "json", 
    //if received a response from the server
    success: function( device, textStatus, jqXHR) {
     //Do something                                 
    }
  });
}

我想确保仅在上面的 for 循环完成后才运行下面的函数。

function drawTable(){
  //Do something
}

任何人都可以提供任何关于如何使其成为可能的想法吗?感谢您花时间阅读和回答。

最佳答案

如果你想以线性方式运行它,你可以这样写你的代码

var countDevice = 0;
(function CountDeviceLoop() {
  if (countDevice == 32) {
    // you can place draw table here or .....
    // drawTable();
    return;
  }

  var dataString="modbus="+(countDevice+1)+"_"+newDate+".xml";
  $.ajax({
    type: "POST",
    url: "CalculateTable",
    data: dataString,
    dataType: "json", 
    //if received a response from the server
    success: function( device, textStatus, jqXHR) {
      //Do something


      //after done sth
      countDevice ++;
      CountDeviceLoop();                             
    }
  });
})();

// here
// drawTable();

因为 ajax 方法是异步的,你可以用这种方式运行你的循环......或者如果你想使用“for 循环”来运行你的程序,你可以使用@MadSkunk 的代码

关于javascript - 如何在for循环中运行ajax后调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14036087/

相关文章:

javascript - 同一模板中可以有重复的 dojo-data-attach-points 吗?

javascript - 检查用户信息时如何显示表格?

javascript - 哪个事件来检查元素是否在滚动时位于视口(viewport)之外?

javascript - 如何将span id传递给rails Controller ?

javascript - jQuery AJAX 没有得到 PHP 的响应

javascript - 将当前值的 html.dropdownlist 传递给 Actionlink?

javascript - 如何在表单输入元素内的数组中插入数据

asp.net - 在 webMethod 上使用 FormsAuthentication

javascript - 更改 ASP.NET MVC 5 中 Controller ActionResult 的 html 元素样式

javascript - 自动更改图像