async/awaitはES2017で導入された非同期処理の書き方です。asyncキーワードで関数を宣言し、awaitで非同期処理の完了を待ちます。コードが同期的に見え、可読性が高く、エラーハンドリングがtry-catchで簡潔に書けます。
コールバックは非同期処理の完了後に実行する関数を引数として渡す従来の方法です。処理が終わったら指定された関数が呼ばれます。複数の非同期処理をつなぐと「コールバック地獄」になりやすく、可読性が低下しやすいデメリットがあります。
使う場面:async/awaitは現代的なコードで、コールバックは古いライブラリやブラウザ対応が必要な場合。ニュアンス:async/awaitは複数の非同期処理を順序立てて書きやすく、コールバックは単一の非同期処理に向きます。対象:async/awaitはPromiseベースの処理に最適で、コールバックは非同期APIの基本形です。可読性ではasync/awaitが優れています。
新規プロジェクトや現代的な環境ではasync/awaitを使用しましょう。古いコードとの互換性が必要な場合やコールバック専用のAPIではコールバックを使います。async/awaitはコードの流れが理解しやすく、エラー処理も統一的です。