
同期処理とは
プログラムが書いた順番に実行されていく方式です。
その処理の1つに時間のかかる処理があると、その実行が完了するまで次の処理には進みません。
非同期処理とは
外部のサーバと通信する関数を呼んだあと、 レスポンスが返るまでに一旦関数から抜けて別の処理を進めて レスポンスを受け取り次第、呼び出し元に値を返します。
Aという関数が完了次第、実行したい関数(function)を引数として 渡して実行させるものを「コールバック関数」といいます。
つまり、非同期処理とは「ある関数が呼び出されたとき、戻り値として本来渡したい結果を返すのではなく、 一度関数としては終了し(=呼び出し元に戻る)、後で『本来渡したかった値』を返せる状態になったときに、 呼び出し元にその値を通知する」という仕組みのことです。
例)ボタンをクリックしたときにUIスレッドとは別のスレッドを起動して、
UIスレッドを専有しないことで、ファイルダウンロード中でもUIが固まらないようにします。
C#では、非同期処理(マルチスレッド)は、Thread、Task、async awaitなどで実装できます。
メインスレッドとは別のスレッドを立ち上げて実行するイメージです。
ただし、JavaScriptでは、シングルスレッドでしか動きません。
JavaScriptで非同期処理(マルチスレッド)を実現するためには、すでに用意されている非同期関数を用いるか、
setTimeout()を使い、自分で非同期関数を実装するなどの方法があります。(これはまた今度)
今日はここまで。