1

JQuery 1.9.1 アプリから 2 つの Web サービス呼び出しを行う必要があります。2 番目の呼び出しを行う前に、最初の呼び出しの結果が必要です。

getJSON リクエストがスレッドをブロックしていないようです。JavaScript はマルチスレッドではないと言われましたが、これらのサーバー呼び出しの間をブロックするにはどうすればよいですか?

4

3 に答える 3

3

jQuery のすべての関数は、 Promise インターフェイスを実装するオブジェクトajaxを返します。jqXHR

非同期リクエスト(およびその他すべて)をブロックする代わりに、リクエストを次のようにネストします

$.ajax({...})
    .done(function( data ) {
        // second request
        $.ajax({...});
    });
于 2013-07-16T11:21:14.723 に答える
2

まあ、スレッドをブロックする必要はありません。それは古い学校です。

次の 2 つのオプションがあります。

  • ajax 呼び出しを同期させます。
  • ajax 呼び出しをカスケードして、最初の呼び出しが完了してから 2 番目の呼び出しが行われるようにします。

2 番目の方法をお勧めします。これが正しい方法です。

/* Call 1 */
$.ajax({
    url: 'first url to call',
    data: 'first data sent to the server',
    success: function (results1){

        // Do something with the results    

        /* make the second call */
        $.ajax({
            url: 'sencond url to call'
            data: 'second data sent to the server'
            success: function(results2){

                // Do something when all completed
            }                
        });
    }
});
于 2013-07-16T11:28:08.047 に答える
1

async falseモードで最初の ajax リクエストをサーバーに呼び出します

$.ajax({
url: Url,
dataType: 'json',
async: false,
 data: myData,
 success: function(data) {
  //stuff
  }
});
于 2013-07-16T11:17:19.410 に答える