如何对jQueryAjax请求排队?
我已经做了很多搜索,我不认为我能找到我要找的 我有一个类似于twitter的系统,你只需点击一个按钮就可以添加(或在twitter中跟踪)多个人 例如,每次我单击下面的“添加”按钮时,它都会发出一个AJAX请求,将它们添加到数据库中如何对jQueryAjax请求排队?,jquery,Jquery,我已经做了很多搜索,我不认为我能找到我要找的 我有一个类似于twitter的系统,你只需点击一个按钮就可以添加(或在twitter中跟踪)多个人 例如,每次我单击下面的“添加”按钮时,它都会发出一个AJAX请求,将它们添加到数据库中 <ul> <li>Ben <a href="#" onclick="return addPerson(1);">Add</a></li> <li>Sarah <a href
<ul>
<li>Ben <a href="#" onclick="return addPerson(1);">Add</a></li>
<li>Sarah <a href="#" onclick="return addPerson(2);">Add</a></li>
<li>Chantelle <a href="#" onclick="return addPerson(3);">Add</a></li>
<li>Alan <a href="#" onclick="return addPerson(4);">Add</a></li>
</ul>
- 本
- 莎拉
- 尚特尔
- 艾伦
现在,如果我一个接一个地为每个人单击add按钮,我不认为为每个人排队一个ajax请求将是对资源的良好利用。再加上它会很慢
在我点击每个“添加”按钮后,我所想的可能是延迟或类似的事情。所以它记录了我点击的人的所有ID,并为所有点击的人发送一个ajax请求
有现成的脚本吗?或者你能推荐我如何做吗?像这样的东西能奏效吗
var sendDelay;
var peopleToSend = [];
addPerson = function(id) {
if (sendDelay!=null) {
clearTimeout(sendDelay); // Clear timeout
}
sendDelay=setTimeout(addPersonDelayComplete,2000); // Reset timeout
peopleToSend.push(id); // Add person to array
}
addPersonDelayComplete = function() {
// Send the people in peopleToSend in a single ajax call here
peopleToSend.length = 0; // Reset the array
}
可能:一个全局
boolean
变量,用于检查AJAX是否已经在运行;如果是这样,请使用setInterval()
继续检查,直到AJAX运行complete()
后重置变量。。。未经测试,但在理论上应该有效。多么传奇!真的很感激,这是开箱即用的!但是这个解决方案不考虑AJAX的状态。如果AJAX仍在加载以前的请求怎么办?@ShivanRaptor-您可以同时处理多个AJAX请求。OP没有要求将其限制为仅一个ajax请求。他们要求实现一个延迟,当延迟过去而没有添加任何新的人员时,使用自上次请求以来收集的所有新名称发出ajax请求。