0

我有一个给定的要处理的项目集合;每个项目都必须等待前一个项目的完成。

通过项目集合,我的意思是一个整数值数组。

通过“处理”,我的意思是对 HTTP 服务器进行 POST,传递每个数组元素的整数值。

我发现了一些看起来像我正在寻找的东西:doSynchronousLoop.js,但我想知道是否有其他选择。

4

1 回答 1

3

如果您的网站在执行请求时可能会暂停渲染,这里有一个使用jQuery的解决方案:

// process 5 items
for (var i = 0; i< 5; i++) {
   // ajax request done with jquery
   $.ajax({
      async: false, /* this makes it execute synchronously */
      url: "the url to handle item #i",
      type: "POST",
      success: function(msg) {
          // process data for item #i
      } 
   })
}

编辑:您也可以异步解决它:

items = [put your items here]
current_item = 0

function processItem() {
    if (current_item == items.length) {
      // list processing finished
      return;
    }

    $.ajax({
      async: true,
      url: "the url to handle item #current_item",
      type: "POST",
      success: function(msg) {
          // process data for item #current_item
          processItem();
          current_item++;
      } 
   })

}

不要错过将变量放在作用域中,我只是将它们放在全局作用域中以使示例更易于理解。

另请参阅文档:jQuery.ajax

于 2013-08-21T13:45:06.283 回答