LoginSignup
0
1

More than 3 years have passed since last update.

非同期処理とは

Last updated at Posted at 2021-02-07

はじめに

非同期処理の理解がないとAPIを扱えないので一旦概念を整理。

ここでは二つの処理のことをそれぞれ、タスクA / タスクBと呼ぶ。

同期処理とは

タスクA / タスクBの具体的な処理を↓とする。

【タスクA】
ミッション①:サーバーにデータのリクエストを送信
ミッション②:サーバーからデータを受け取ってブラウザに表示

【タスクB】
ミッション①:タスクAで受け取ったリクエストをもとに、データベースからデータを呼び出す
ミッション②:データベースから呼び出したデータをレスポンスとしてタスクAに返す

同期処理の場合、タスクAは①でサーバーにリクエストを送ると、タスクBの①②の処理が完了するまで、
自身のミッション②を実行できない。つまり、タスクAを一旦中断することになる。

タスクBで重い処理があった場合、それが完了するまでユーザーは何もできない状態になり、
離脱に繋がってしまう。

そこで非同期処理の登場。

非同期処理とは

非同期処理は、タスクBの処理完了を待たずに、タスクAを進めてしまう処理のこと。

これにより、タスクBの処理が完了するのを待たずに、ユーザーは他の操作ができるようになるため、
前述の「何もできない状態」は解消される。

しかし、タスクBから返されるデータを用いてタスクAのミッション②を実行したい場合、
非同期処理だとデータがない状態でタスクAが進んでしまうため、エラーに繋がってしまう。
(今回の場合、ブラウザに表示するデータがない状態でタスクAのミッション②が実行されてしまう。)

ゆえに、タスクBの処理完了を待ってから、
タスクAを実行させるという非同期処理の順序を制御する必要がでてくる。

非同期処理を制御する具体的な方法として下記がある。 
*今回は非同期処理の概念整理なのでこの部分の詳細は割愛。

・コールバック関数
・Promise
・async/await

これらを用いて、処理の順序をコントロールすることが、非同期処理では必要となる。

まとめ

この辺りの非同期処理の概念的な理解があった上で、Promiseやasync/awaitを学ぶと理解が進む。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1