4

実際には複数の ajax 呼び出しを呼び出していますが、いくつかの ajax 呼び出しが最初に完了し、その停止関数で定義された atsk を実行する必要があります。もう一度

    $('.badgeContainer').ajaxStop(function() 
    {

          alert("ajax rqst completed");
    });

 $.ajax({

 type: "POST",

           url: "WebServices/abc.asmx/dosomething",
        data: "{  }",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function(serviceReply) {
                          var serviceReplyArray = serviceReply.d.split("#");

                    },
                    error: function(xhr, errDesc, exception) {
                                                                    }
                });

ここで別の ajax を呼び出しますが、今回は .ajaxstop を呼び出すべきではありません

私はこのように私の質問を入れています:

Web サービスへの 2 つの ajax 呼び出しがあるとします。1 つの ajax 呼び出しが完了すると、2 番目の jax 呼び出しの実行を待つ前に、その ajax 呼び出しに依存する関数が実行される必要があります。ログアクティビティの aax 呼び出しを呼び出す前に関数が実行されるようにします。ユーザーアクティビティの ajajx 呼び出しを待つ必要はありません

4

2 に答える 2

4

設定したいと思います:

 async: false

デフォルトでは、すべてのリクエストが非同期で送信されます。同期リクエストが必要な場合は、このオプションを false に設定します。同期リクエストはブラウザを一時的にロックし、リクエストがアクティブな間はすべてのアクションを無効にする場合があることに注意してください。
この古い質問も参照してください。
jQuery で非同期ではなく同期の Ajax リクエストを実行するにはどうすればよいですか?

于 2012-06-14T06:06:26.383 に答える
0

jQuery 1.8 以降、jqXHR ($.Deferred) で async: false を使用することは推奨されなくなりました。完全/成功/エラーのコールバックを使用する必要があります。

http://api.jquery.com/jQuery.ajax/ (非同期セクション)

これは少し面倒だと思いました...開発者は、プラットフォームが許可するものである場合、ブロック呼び出しを行う選択肢を与えられるべきですasync: false-なぜそれを制限するのですか? ハングの影響を最小限に抑えるために、タイムアウトを設定するだけです。

それにもかかわらず、私は現在 1.8 でキューを使用しています。これはノンブロッキングであり、非常にうまく機能します。Sebastien Roch は、関数をキューに入れ、それらを実行/一時停止できる使いやすいユーティリティを作成しました。https://github.com/sebastien-roch/Jquery-Async-queue

    queue = new $.AsyncQueue();
    queue.add(function (queue) { ajaxCall1(queue); });
    queue.add(function (queue) { ajaxCall2(queue); });
    queue.add(function() { ajaxCall3() });
    queue.run();

最初の 2 つの関数では、オブジェクトを呼び出しに渡しqueueます。呼び出しは次のようになります。

function ajaxCall1(queue) {
    queue.pause();
    $.ajax({
       // your parameters ....
       complete: function() {
         // your completing steps
         queue.run();
       }
    });
}

// similar for ajaxCall2

queue.pause();各関数の先頭にある に注意し、ステートメントqueue.run()の最後でキューの実行を続行します。complete

于 2012-10-25T14:39:11.697 に答える