【面接対策】コールバック関数 / Promiseとは?中学生でもわかる例え話と理想的な回答例

非同期・イベント駆動
博士
【コールバック関数(読み方:コールバックかんすう)/ Promise(読み方:プロミス)】
友達との待ち合わせを想像してください。コールバック関数は、「友達が来たら、電話して!」と伝えておくようなもの。Promiseは、「友達が来るかどうか、後で教えてくれるチケット」をもらうイメージです。どちらも、待ち時間の間、他のことを進められます!
💡 面接でのベスト回答
想定質問:「コールバック関数 / Promiseについて教えてください」

面接官:コールバック関数 / Promiseについて説明してください。

私:コールバック関数は、ある関数が終了した後に実行される関数です。Promiseは、非同期処理の結果(成功または失敗)を扱うためのオブジェクトです。

以前のプロジェクトで、大量の画像処理を行うWebアプリケーションを開発した際、コールバック関数を使った非同期処理でパフォーマンスが問題になりました。画像処理が終わるたびにコールバック関数が呼ばれるため、処理が複雑化し、エラーハンドリングも煩雑でした。

そこでPromiseを導入したところ、処理の流れが明確になり、`.then()`メソッドで成功時の処理、`.catch()`メソッドでエラー時の処理をチェーンのように記述できるため、コードの見通しが格段に向上しました。結果として、処理速度が20%向上し、エラー発生率も大幅に減少しました。

現役エンジニアによる深掘り解説

コールバック関数のメリット

  • 単純な非同期処理を手軽に実装できる。
  • ブラウザやNode.jsなど、多くの環境で利用可能。

コールバック関数のデメリット

  • コールバック地獄(ネストが深くなり可読性が低下)に陥りやすい。
  • エラーハンドリングが煩雑になる。
  • 処理の順番が把握しづらくなる。

Promiseのメリット

  • コールバック地獄を回避できる。
  • `.then()`、`.catch()`、`.finally()`メソッドで処理をチェーンのように記述できるため、コードが読みやすくなる。
  • エラーハンドリングが容易になる。
  • 複数の非同期処理をまとめて扱うことができる(`Promise.all()`、`Promise.race()`など)。

Promiseのデメリット

  • コールバック関数に比べて、記述量が多くなる場合がある。
  • 古いブラウザではpolyfillが必要になる場合がある。

⚠️ 面接突破のワンポイント

  • コールバック地獄の具体的な例を挙げ、Promiseでどのように解決できるかを説明できるように準備しましょう。
  • `async/await`構文とPromiseの関係を理解し、`async/await`を使うことでPromiseベースのコードがどのようにシンプルになるかを説明できるようにしましょう。
タイトルとURLをコピーしました