🐡

非同期処理とは?ていうか同期処理すら何?(JavaScript)

2024/05/04に公開

↓わかりやすい図

同期処理の意味から

プログラム内で順番に処理が実行される処理のこと。ある処理が完了するまで次の処理は実行されず、プログラムはその処理が終了するまで待機します。

console.log('処理を開始します');

// 同期的な処理
function syncFunction() {
    console.log('同期的な処理が実行されました');
}

syncFunction();

console.log('処理が完了しました');

syncFunction関数が同期的に呼び出されています。つまり、この関数が完了するまで次の処理は実行されません。

結果

処理を開始します
同期的な処理が実行されました
処理が完了しました

同期処理では、処理の順序が保証され、一つの処理が終了するまで次の処理は実行されません。
シンプルで理解しやすい反面、待機時間が長くなると他の処理をブロックする可能性がある。

本題の非同期処理について

複数の処理を並列して実行できる。(簡単に理解するためこの説明だけ。↑の画像を参考に)

// 非同期処理の例:setTimeout関数
console.log('処理を開始します');

setTimeout(function() {
    console.log('非同期処理が完了しました');
}, 2000);

console.log('処理を続行します');

結果

処理を開始します
処理を続行します
(2秒後)
非同期処理が完了しました

setTimeout関数によって指定された処理が非同期であるため、プログラムの実行はそのまま進行します。つまり、非同期処理が待機している間に、他の処理が続行されます。そして、指定された時間が経過した後に、コールバック関数が実行されます。

まとめと付け加え情報

非同期処理と同期処理を簡単にまとめると以下の通りです:

同期処理:

  • 処理が一つずつ順番に実行される。
  • 一つの処理が完了するまで次の処理は実行されない。
  • 処理の順序が保証される。
  • 処理中に他の処理が待たされる可能性がある。

非同期処理:

  • 処理が同時に実行されることがあり、完了の順序が保証されない。
  • 待機中の処理があっても他の処理が実行される。
  • コールバック関数やPromise、非同期関数などを使用して、非同期的に処理を実行する。
  • 待機中の処理が終了するのを待たずに、他の処理が進行するため、効率的なプログラム実行が可能。

非同期処理は、ファイルの読み書き、ユーザー入力の処理など、時間のかかる操作や外部リソースへのアクセス時に重要です。
同期処理は、順序が重要である場合や、待ち時間が許容される場合に使用されます。

参考動画↓
https://youtu.be/hfoxoVo0cVo?si=Muh7UdnaBzZN5vXl

Discussion