非同期と同期の違いは何ですか? また、その違いはリクエストにどのように影響しますか?
2 に答える
同期および非同期リクエストに関する Mozilla の記事から:
XMLHttpRequest は、同期通信と非同期通信の両方をサポートしています。ただし、一般的には、パフォーマンス上の理由から、同期要求よりも非同期要求を優先する必要があります。
つまり、同期リクエストはコードの実行をブロックし、メモリとイベントをリークする可能性があります。これは重大な問題を引き起こす可能性があります。同期リクエストを使用する唯一の現実的な理由は、Web Worker 内でのダウンロードをより簡単にすることです。
XMLHttpRequest が存在する主な理由は、非同期要求です。XMLHttpRequest は AJAX を支えています。この考え方は、JavaScript コードを実行させ、ユーザーがページで何でもできるようにする一方で、JavaScript はバックグラウンドでサーバーと通信します。たとえば、Gmail はこの方法でメールを読み込みます。
同期リクエストは、転送が完了するまでスクリプトの実行をブロックします。簡単に言えば、非同期リクエストが利用可能な場合にこれを行う理由はありません。Gmail が常にフリーズしていたら、かなり迷惑だと思いませんか? 同期リクエストを使用することはほとんどありません。
同期リクエストを使用しなければならない状況もありますが、それらの状況以外では、同期リクエストを行う理由はまったくなく、非同期リクエストを使用するあらゆる理由があります。
非同期リクエストを使用すると、サーバーからの応答を待っている間、スクリプトを実行し続けて別のことを行うことができます。
同期要求は、応答が受信されるまでスクリプトの実行をブロックします。つまり、アプリケーションが応答しなくなり、他に何もできなくなります。