试图做一个“队列管理器”,但我不能完全理解如何完成这个。我意识到我可以简单地禁用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()
,但无济于事。