他の答えのほとんどは、これに対処する方法に答えています。この場合、なぜ非同期が優れているのかを簡単に見ていきたいと思います。
実際、ほとんどのブラウザー内Javascriptは非同期です。たとえば、次のコードを考えてみましょう。
document.getElementById('foo').onclick = function() {
alert('foo clicked');
};
document.getElementById('bar').onclick = function() {
alert('bar clicked');
};
どちらが最初に実行されますか?ブラウザモデル(または実際にはほとんどのイベント駆動型コード)に固有の非同期性のため、わかりません。イベントが発生したときにコードを実行します。ドキュメントを設定し、イベントが発生するのを待つと、最初に発生するイベントに応じて、コードをさまざまな順序で実行できます。Javascriptコードは、最初に作成されたときだけでなく、ページの存続期間全体にわたって実行する必要があります。
したがって、一般的に、 Javascriptプログラミング(または少なくとも、最も単純なレベルを超えるJavascriptプログラミング)は非同期になることがよくあります。さらに、HTTPリクエストを非同期にすることも非常に理にかなっています。
まず、質問で示唆しているように、コードを同期させると実行がブロックされます。つまり、HTTPリクエストを2行上に作成しているため、アニメーションの開始を2秒待たせたくない場合があります。サーバーの応答時間は(a)不規則で、(b)遅い可能性があるため、アプリケーションの設計がサーバーの応答速度に依存することは意味がありません。
次に、さらに重要なことに、スクリプトがAJAX呼び出しを行っているために、ユーザーがページの使用を停止することはありません。ユーザーは気にしません。スクリプトが現在無関係のAJAXリクエストに関連付けられているため、ユーザーはおそらく通常のonscroll
動作が機能していないことに気付くでしょう。ブラウザのJavascriptプログラミング全体の非同期性と連携するには、HTTP呼び出しの大部分が非ブロッキングで非同期である必要があります。