TypeScript 非同期処理入門!Promise & Fetch を使いこなす!

TypeScript を使用した非同期処理は、ウェブ開発において重要なスキルの一つとなっています。本記事では、PromiseとFetch APIを活用した効率的な非同期编程の方法を基礎から解説します。Promiseは非同期処理の流れを管理し、FetchはHTTPリクエストを簡単に送信できる機能を提供します。これらの技術を組み合わせることで、より読みやすく、維持可能なコードを書くことが可能になります。初心者から中級者まで、非同期処理の理解を深めたい方におすすめです。
非同期プログラミングの基礎: Promise と Fetch を使用してデータを取得する
非同期プログラミングは、ウェブアプリケーションで重要な役割を果たしています。TypeScript を使用することで、より安全で効率的な非同期処理を実装できます。本記事では、Promise と Fetch API を使用してデータを取得する方法を詳しく説明します。
Promises とは何か?
Promise は、非同期操作の結果を表すオブジェクトです。Promise は、解決(resolve)または拒否(reject)のいずれかの状態になります。Promise は、非同期操作の結果をハンドルするための強力なツールを提供します。 以下は、Promise の基本的な使い方です: typescript const myPromise = new Promise((resolve, reject) => { // 非同期操作 setTimeout(() => { const result = '操作が成功しました!'; resolve(result); }, 2000); }); myPromise.then((result) => { console.log(result); // 操作が成功しました! }).catch((error) => { console.error(error); });
Fetch API とは何か?
Fetch API は、ウェブリソースからデータを取得するために使用される標準的なブラウザAPIです。Fetch API は Promise をベースとしており、HTTP リクエストを簡単に送信できます。 以下は、Fetch API を使用してデータを取得する基本的な例です: typescript fetch('https://api.example.com/data') .then((response) => response.json()) .then((data) => { console.log(data); }) .catch((error) => { console.error('エラー:', error); });
Promise チェインを使用した複数の非同期操作の連携
Promise チェインを使用することで、複数の非同期操作を連携させることができます。各 Promise の結果を次の Promise に渡すことができます。 以下は、複数の非同期操作を連携させる例です: typescript fetch('https://api.example.com/user') .then((response) => response.json()) .then((user) => { return fetch(`https://api.example.com/posts?userId=${user.id}`); }) .then((response) => response.json()) .then((posts) => { console.log(posts); }) .catch((error) => { console.error('エラー:', error); });
同期と非同期の違い
同期処理と非同期処理の主な違いは、処理の実行順序とブロッキングの有無です。 - 同期処理: コードが順番に実行され、各ステップが完了するまで次のステップに進みません。これは、ブロッキングな処理であり、レスポンス性が低下することがあります。 - 非同期処理: コードが並行に実行され、各ステップが完了するまで待たなくても次のステップに進むことができます。これは、非ブロッキングな処理であり、レスポンス性を維持できます。
非同期エラーハンドリング
非同期操作において、エラーを適切にハンドリングすることは非常に重要です。Promise の `catch` メソッドを使用することで、エラーを捕獲できます。 以下は、エラーをハンドリングする例です: typescript fetch('https://api.example.com/data') .then((response) => { if (!response.ok) { throw new Error('リクエストに失敗しました'); } return response.json(); }) .then((data) => { console.log(data); }) .catch((error) => { console.error('エラー:', error); });
| 項目 | 説明 |
|---|---|
| Promise | 非同期操作の結果を表すオブジェクト |
| 非同期処理 | コードが並行に実行され、各ステップが完了するまで待たなくても次のステップに進むことができます |
| Fetch API | ウェブリソースからデータを取得するために使用される標準的なブラウザAPI |
| 同期処理 | コードが順番に実行され、各ステップが完了するまで次のステップに進みません |
| エラーハンドリング | 非同期操作において、エラーを適切に捕獲し、適切な処理を行うこと |
よくある疑問
TypeScript での非同期処理とは何ですか?
非同期処理は、TypeScriptで複数のタスクを並行して実行するための手法です。通常、プログラムは一連のコマンドを順番に実行しますが、非同期処理では特定のタスクが完了するのを待たずに次のタスクに進むことができます。これにより、プログラムの応答性が向上し、ユーザー体験が向上します。特に、ネットワーク通信やデータベースアクセスなどの時間のかかる操作では、非同期処理が非常に役立ちます。Promisesやasync/awaitなどのメカニズムを使用することで、非同期処理を効率的に行うことができます。
Promises とは何ですか?
Promisesは、非同期操作の結果を扱うためのオブジェクトです。Promisesは、操作が成功した場合のresolveコールバックと、失敗した場合のrejectコールバックを提供します。このメカニズムにより、非同期操作の結果をチェインして処理することができます。たとえば、複数のAPIリクエストを連続して行う場合、前のリクエストが成功した後に次のリクエストを実行することができます。これにより、コードの可読性とメンテナビリティが向上し、エラーハンドリングもよりシンプルになります。
Fetch API を使ったデータ取得の基本は?
Fetch APIは、ウェブブラウザでデータを取得するための現代的な方法です。Fetch APIはPromisesをベースにしていますので、非同期操作をスムーズに行うことができます。基本的な使い方としては、fetch関数にURLを指定してHTTPリクエストを送信し、レスポンスをPromisesチェインで処理します。たとえば、JSONデータを取得する場合、fetch関数でリクエストを送信し、レスポンスをJSONにパースしてからデータを処理します。これにより、効率的で読みやすい非同期データ取得が実現できます。
非同期処理で注意すべき点は?
非同期処理を扱う際には、いくつかの注意点があります。まず、Promiseのチェインが長くなるとコードが複雑になる可能性があります。この問題を避けるためには、適切な関数の分割やasync/awaitの使用が推奨されます。また、非同期操作が失敗した場合のエラーハンドリングも重要です。Promisesのcatchメソッドやtry/catchブロックを使用することで、エラーをキャッチし、適切な処理を行うことができます。さらに、非同期操作のタイミングに注意を払うことも重要です。たとえば、ユーザーの入力に応じて非同期操作を開始する場合、操作が完了する前にユーザーが別のアクションを起こさないよう、適切な状態管理が必要です。

こちらもおすすめです