2

私は多くの検索を行ってきましたが、探しているものが見つからないと思います。

私は、ボタンをクリックするだけで複数の人を追加 (または 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>

ここで、各ユーザーの追加ボタンを次々とクリックすると、各ユーザーに対して 1 つの ajax リクエストをキューに入れることは、リソースを有効に活用できるとは思えません。さらに、それは遅くなります。

私が考えているのは、各「追加」ボタンをクリックした後の遅延またはそれらの線に沿った何かである可能性があります。そのため、クリックした人のすべての ID を記録し、クリックしたすべての人に対して 1 つの ajax リクエストを送信します。

既存のスクリプトはありますか、またはこれを行う方法をお勧めできますか?

4

1 に答える 1

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
 }
于 2012-04-24T03:08:51.237 に答える