これまでの投稿でコールバック関数、Promise、async/awaitについてまとめてきました。
最後にこれら3種類の非同期処理の使い分けについて、本記事で整理します。
▼過去の記事
- JavaScriptの非同期処理の変遷 ① コールバック関数の登場とその課題
- JavaScriptの非同期処理の変遷② Promiseを利用することで改善できたこととは?
- JavaScriptの非同期処理の変遷③ async/awaitはなぜ同期処理のように書けるのか
- TypeScriptでの非同期処理 戻り値の型どうする? Promise
- [JavaScript]Promiseからasync/awaitへの書き換え
async/awaitの利点
非同期処理を同期処理とほぼ変わらない文法で、とても簡単に記述できる。
async/awaitの注意点
- 単なるPromiseの糖衣構文ではない
※糖衣構文:プログラミング言語において、読み書きのしやすさのために導入される書き方
Promiseについて
- そもそもasync/awaitはPromiseオブジェクトを使いやすくするための構文なので、Promiseについての理解は必須。
- Promiseを返す非同期処理関数を自分で実装する場合、Promiseの理解は必ず必要。
- 複数の非同期処理を並列実行する場合、asnyc/awaitだけでは対応できないので、Promise.all()のような待ち合わせ関数が必要。
コールバック関数について
- 複数回呼ばれる可能性のある処理にはコールバック関数が必要。
- 以下のようなケースでは、コールバック関数を使った方が扱いやすい。
- あくまでもサブ的な処理であり、他にメインの処理がある
- 頻繁には呼ばれず、せいぜい終了時に1回呼ばれる程度
- イベントが発生するタイミングが局所的ではなく、プログラム実行中のいろいろなタイミングで発生する可能性がある
▼参考文献