--- title: 非同期 JavaScript slug: Learn/JavaScript/Asynchronous tags: - JavaScript - Promises - async - asynchronous - await - setInterval - setTimeout translation_of: Learn/JavaScript/Asynchronous ---
{{LearnSidebar}}

このモジュールでは、{{Glossary("asynchronous")}} {{Glossary("JavaScript")}} に触れ、なぜそれが重要なのか、そして、潜在的なブロッキング処理(例えばサーバからリソースを取得する)に効果的に対処するためにどうやって使うのかを見ていきます。

前提条件

非同期 JavaScript はとても高度なトピックなので、事前に JavaScript の第一歩JavaScript の構成要素のモジュールに取り組んでおくことをおすすめします。

非同期プログラミングの概念に慣れていない場合は、間違いなくこのモジュールの General asynchronous programming concepts から始めるべきです。慣れている場合は、Introducing asynchronous JavaScript まで飛ばしていただいてもかまいません。

注記: ファイルを作成する手段のないコンピュータ・タブレット・その他のデバイスをお使いの場合、(ほとんどの)コード例は JSBinThimble などのオンラインエディタでも試すことができます。

ガイド

General asynchronous programming concepts

この記事では、非同期プログラミングに関するいくつかの重要な概念を一通り確認し、それらがウェブブラウザや JavaScript でどう見えるかを確認します。このモジュールの他の記事に進む前に、それらの概念を理解しておいてください。

Introducing asynchronous JavaScript
この記事では、同期 JavaScript にまつわる問題をざっと振り返り、これから遭遇するであろう、今までとは異なる非同期 JavaScript のテクニックをいくつか見てみます。そして、それらのテクニックがいかにして同期 JavaScript の問題を解決するかを確認します。
Cooperative asynchronous JavaScript: Timeouts and intervals
ここでは、JavaScriptでコードを非同期〔一定時間が経過した時、もしくは、一定間隔(例えば1秒あたり何回)〕に実行する時に使う伝統的な手法を見てみます。そして、どんな場合に便利なのかを説明し、内在する問題を考察します。
Handling async operations gracefully with Promises
Promise は JavaScript の比較的新しい機能で、前の処理が完了するまでそれ以上の処理を先延ばしにしたり、その失敗に対処したりすることを可能にするものです。これは、一連の作業を正しく動作させるのに非常に便利です。この記事では、promise がどのように動作するか、WebAPIのどこで使われているか、そして、どうやって使うかを解説します。
Making asynchronous programming easier with async and await
Promise は構成したり理解したりするのにやや複雑であるため、モダンブラウザは async 関数と await 演算子を実装しています。前者は通常の関数が promise によって暗黙に非同期的に振る舞うことを可能にし、後者は async 関数内で処理が進む前に promise を待つことで、promise の連鎖を簡単にします。この記事では async/await を解説します。
Choosing the right approach
このモジュールの最後に、別のコーディングテクニックとこれまで議論してきた機能を考察します。そして、推奨事項とよくある落とし穴への注意とともに、どれを・いつ・どこで使うのが適切なのかを検討します。

関連情報