如何排队jQuery ajax请求?

时间:2012-04-24 02:51:23

标签: jquery

我一直在做很多搜索,并且不认为我能找到我想要的东西。

我有一个类似于twitter工作的系统,只需点击一下按钮就可以在多个人中添加(或跟随Twitter)。

例如,每次我点击"添加"下面的按钮,它发出一个AJAX请求将它们添加到数据库中。

<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>

现在,如果我一个接一个地点击每个人的添加按钮,我不认为排队每个人的ajax请求将充分利用资源。加上它会很慢。

在我点击每个&#34;添加&#34;之后,我想到的可能是延迟或类似的事情。按钮。因此,它会记录我点击的所有人的ID,并为所有点击的人发送一个ajax请求。

是否有现有脚本或者您能推荐我如何做到这一点?

1 个答案:

答案 0 :(得分:3)

这样的事情能做到吗?

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
 }