0

试图做一个“队列管理器”,但我不能完全理解如何完成这个。我意识到我可以简单地禁用async,但这会阻止一切,我需要一些东西来触发。

我的想法是使用回调或任何东西来向队列管理器发出信号,表明您可以让另一个项目通过。我已经尝试了很多次,只是无法完全正确。

这就是我的想象:

mc.queueManager = function(ajaxRequest) {
  var queue = []; // The "queue", an array

  this.request = ajaxRequest;
  queue.push(this.request);

  this.curtask = queue.shift() // Grab and remove the first item from the queue

  $.ajax({
    type: "POST",
    url: "handler.php",
    data: {"data": this.curtask},
    success: function(data) {
      // Handle data retrieved
    },
    complete: function() {
      // So, request completed, now this is the callback
      if (queue.length > 0) {
        mc.queueManager(queue.shift()); // Grab next item and repeat
      }
    }
  });
};

现在我可以理解没有什么能阻止多个请求被触发,我现在不知道该怎么做。我目前正在查看$.deferred文档。$.when()我还尝试了使用/的不同方法.then(),但无济于事。

4

0 回答 0