0

ユーザーが多数のアクションを同時に実行できる Web アプリを構築しています。たとえば、ユーザーはリストを開いたり、リストを削除したり、新しいリストを追加したりできます。

各アクションは ajax 呼び出しを行い、コールバック関数を実行して、成功時に UI を更新します。これらのアクションがシリアル化された方法で実行されるようにして、UI が同期されないようにしたいと考えています。たとえば、ユーザーがリストを開いて、その直後にリストを削除した場合、どの ajax 呼び出しが最初に終了したかによって、現在削除されているはずのリストが表示される場合があります。

これを達成するために、各アクションについて、ajax 呼び出しとそのコールバック関数が完了するまで待ちたいと思います。どうすればこれを達成できますか?

4

2 に答える 2

0

jQuery を使用している場合、.always()コールバックは.done()/の後に呼び出されます.fail()

$.ajax("example.php")
    .done(function() {
        alert("success");
    })
    .fail(function() {
        alert("error");
    })
    .always(function() {
        alert("complete"); //Called after done/fail callbacks
    });
于 2013-09-16T02:49:23.870 に答える
0

async: falseJquery を使用すると、Ajax 呼び出しに追加するか、 Jquery deferredを使用して、Ajax 呼び出しが終了した後にのみアクションが発行されるようにすることができます (Jquery を使用する場合)。

複数の Ajax リクエストがある場合、例は次のようになります。

$.ajax({url: url}).pipe(function() {
  // some ajax stuff
  return $.ajax({});
}).pipe(function() {
  // some more ajax stuff (3rd request)
  return $.ajax({});
}).done(function() {
  // done with all ajax requests...
});
于 2013-09-16T02:48:30.353 に答える