『非同期処理』の対義語が『同期処理』です。同期処理ではプログラムは上から下に順に実行されます。これに対して、非同期処理とは時間のかかる処理をしている間、別の処理が実行できるようにするものです。
そのため、非同期処理が必要になるのは、サーバーからデータを取得するなど、処理が一瞬で終わらないものです。
非同期処理を理解するのに分かりやすい例えに「お昼休みの効率的な時間の使い方」があります。Aさんはお昼休みに、近所のお弁当屋でお弁当を買って、その隣にあるコンビニと本屋で買い物をして職場に戻る計画を立てました。しかし、お弁当屋は注文を受けてからお弁当を作るので、待ち時間が10分ほど必要です。
同期処理的なお昼休みは以下のようになります。
これに対して非同期処理的なお昼休みは以下のようになります。
というのも、弁当を注文してから受け取るまでの10分間をただ待っているだけではなく、その間にコンビニと本屋の買い物をすれば効率的に時間が使えます。
処理が分かりやすいのは同期処理です。なぜなら仕事を一つずつこなしていくからです。しかし、非同期処理ができれば、コンピューターのリソースを効率的に使うことができるというわけです。
なでしこ3の親言語であるJavaScriptでは非同期処理をどのように記述するかが長年の課題でした。なでしこでも非同期処理を記述できます。
なでしこの命令に「**時」や「**後」というものがあります。これは、コールバック方式で非同期処理を行います。
例えば、サーバーからデータを取得する「AJAX送信時」があります。この命令はサーバーからデータを取得すると、「AJAX送信した時には」から「ここまで」の間に書いたプログラムが実行されます。
以下は郵便番号APIにアクセスし、データを取得するプログラムです。
詳しくは、文法/無名関数をご覧ください。
(v3.2.44以降) 非同期を意識せず使えるように配慮された新しい命令セットがあります。これらの命令を使えば、他のなでしこ命令と同じように非同期処理が可能です。