javascript - 数组循环中的 AJAX 调用,仅在前一个完成后调用下一个

标签 javascript jquery ajax jquery-deferred

我有一个数组来上传数据,我希望它们一一发送到服务器。 我希望在发送下一份之前完成上一份。 实际上,在每次回复后我想决定是否发送下一条。

while (packetCount < bulkUploadPackets.length) {
  d = d.then(save(bulkUploadPackets[packetCount]))
    .then(function(uploadResponse) {
      //I want to come here after first call complete 
      //before second call is fired and so on
      packetCount++;
    });
}


save: function(modelToSave) {
  var defer = $.Deferred();
  var self = this;
  this.model = modelToSave;
  Backbone.sync('create', this, {
    success: function(data, textStatus, jqXHR) {
      console.log("success" + data);
      defer.resolve(data);
    },
    error: function(response) {
      defer.reject(errorObj);
    }
  });

  return defer.promise();
}

最佳答案

您可以使用递归函数并将递归调用放在then中:

(function loop() {
     if (packetCount<bulkUploadPackets.length) {
           d = d.then(save(bulkUploadPackets[packetCount]))
                .then(function(uploadResponse){
                      //I want to come here after first call complete before second call is fired and so on
                      packetCount++;
                      loop();
                 }); 
     }
})();

关于javascript - 数组循环中的 AJAX 调用,仅在前一个完成后调用下一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36626803/

相关文章:

javascript - 用于 Visual Studio 的 Node.js NTVS 工具

javascript - 如何使用本地存储将我的输入框值存储到另一个输入框

javascript - jQuery 无法获取 attr 值

javascript - 使用 CSS 自动生成一个 Div 结构

javascript - javascript可以从MVC中获取值(value)吗?

javascript - 用新的 React : how to compare current props. children

javascript - javascript 中使用 math.floor 函数反转数组

javascript - 如何获取具有任意数量的主题标签的帖子中被点击的主题标签的值?

javascript - 插入 DOM 时 IE 卡住 GIF 动画

ajax - 使用 AJAX(不是表单)更新 Rails 3 部分