🦁

同期処理と非同期処理について①

2022/11/30に公開2

非同期処理について

まず最初に、簡潔に、結論を言っていくと

処理を一度バックグラウンドに移すことで、あるタスクを実行している最中でも
その処理を止めることなく、別のタスクを実行できる方式
のこと。

詳しく見ていくと…まずは…

同期処理と非同期処理とは

<同期処理>

複数のタスクを実行する際に、上から一つずつ順番にタスクが実行される方式。

  • merit:全体を把握しやすい
  • demerit:処理完了までに時間がかかり、ユーザーにとってはストレス

<非同期処理>

処理を一度バックグラウンドに移すことで、あるタスクを実行している最中でも

その処理を止めることなく、別のタスクを実行できる方式

→これを実現するのが、コールバック、Promise , async/await
jsにおいてはajaxと言う技術もある。
(次回、詳しく解説)

  • merit:全体の処理速度を速められる
  • demerit:プログラムの全体像が複雑になりやすい

<同期処理と非同期処理の比較>

<同期処理と非同期処理の比較>

~比較~ 同期処理 非同期処理
merit 全体を把握しやすい 全体の処理速度を速められる
demerit 処理完了までに時間がかかり、ユーザーにとってはストレス プログラムの全体像が複雑になりやすい
使用場面 処理結果を待つ必要があるもの 処理結果を待たなくても良いもの、処理結果がなくても進められるもの

⚠️非同期処理と並行処理の違い⚠️

並行処理=文字どおり複数の処理を同時進行で行うこと。

⚠️非同期処理と並行処理の違い⚠️

並行処理=文字どおり複数の処理を同時進行で行うこと。
非同期処理は処理を止めることなく実行できるというだけ

同期処理と非同期処理をもっとわかりやすく例えると…

(下手なイラストだけども描いてみたよ。)

<同期処理タイプのホールスタッフのレストラン>
1番テーブルのオーダー取ったら、キッチンにオーダーを伝えにいく。
料理が出来上がるまでこのスタッフはキッチンの前から動かない。
2番テーブルから呼ばれても、聞こえていないタイプ。笑
1番テーブルの料理を運び終わってから2番テーブルへ行く。

<非同期処理タイプのホールスタッフがいるレストラン>
1番テーブルのオーダーをとって、キッチンに伝えに行く。
戻ってきて2、3番テーブルからもオーダーをとって、またキッチンに伝えに行く。
料理ができたら逐一運ぶ!!

このような感じ!!

なぜ非同期処理が必要なのか

ズバリ一言。

”快適な操作性を確保するため”

同期処理だと、等り上からプログラムを実行していくため、
ある一つの処理が終了するまで次の処理を行えない。これは効率が悪いため。


今日はここまで!

次回は、コールバック、Promise , async/awaitについて記述していきます。

"技術は何かの課題をクリアするために生まれている"

なんでこの技術があるのか、わかってくると理解もいい方に変わってくるよね??

アウトプットを始めてから1ヶ月があっという間に経っていたみたいです。
継続は力なり。ではあるが「継続は力なり」の一歩先に思考が働いているか?
継続に伴って、結果も大事よね💟

では、おやすみなさい💫

Discussion

jonsoku2jonsoku2

すごい、理解やすいイラストです〜
非同期と同期の比較Tableとかあったらもっと良さそうですww
それぞれ使う状況が違うので、どのとき何を使ったらいいのかもわかりやすく見えそうですね〜

AirichanAirichan

アドバイスありがとうございます!!修正致します!