はじめに
非同期処理の理解がないと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を学ぶと理解が進む。