JavaScriptのasync/await関数とは?Promiseを活用した非同期処理の基本
Promiseオブジェクトは、非同期処理の最終的な完了(または失敗)と、その結果得られる値を表すものです。async/await関数は、このPromiseを基盤として動作します。
async/awaitを使うことで、内部では非同期タスクを実行しながら、コードの見た目は完全に同期的に記述できます。これにより、ネストが深くなりがちなコールバックスタイルを避け、可読性の高いコードを書くことが可能になります。
Promiseを返す非同期関数の例
たとえば、2秒後に値100で解決されるPromiseを返す非同期関数を考えてみましょう。
// 2秒後に100で解決されるPromise
function getHundred() {
return new Promise(resolve => {
setTimeout(() => {
resolve(100);
}, 2000);
});
}従来のコールバック方式での利用
この関数を別の関数の中で使いたい場合、戻り値を待つ必要があります。コールバックを使うと、次のように記述することになります。
function useGetHundred() {
getHundred().then((value) => {
console.log(value);
})
}しかしこの方法では、取得したデータに対して処理を行うために、不要なコールバック関数を作成しなければなりません。そこで役立つのがasync/awaitです。これを使うことで、コードを大幅にシンプルにできます。
async/awaitを使った書き方
例
// async関数を宣言する。この関数自体も呼び出されるとPromiseを返す
// 関数内ではawaitキーワードによって、非同期処理を同期的に扱える
async function useGetHundredAsync() {
// getHundredのPromiseが解決されるのを待ち、その値をvalueに格納する
let value = await getHundred();
console.log(value)
}出力
100
awaitキーワードを使うと、Promiseが解決されるまでその行で処理が一時停止し、結果の値を直接変数に受け取ることができます。async/awaitは、モダンなJavaScriptにおける非同期処理の標準的な書き方として広く採用されており、エラーハンドリングもtry/catch構文で直感的に行えるというメリットがあります。
-
JavaScriptの簡潔なアロー関数の書き方と実装例
簡潔なアロー関数とは JavaScriptにおける簡潔な(コンサイス)アロー関数の構文は、次のようになります。 (param1, param2) => param1 + param2 この形式には function キーワードがなく、波括弧 {} で囲まれた関数本体もありません。パラメータと関数本体の間に => を置くだけで成立します。 さらに、パラメータが1つだけの場合は、丸括弧を省略して次のように書くこともできます。 param1 => param1 * 2 主な特徴 functionキーワード不要: 通常の関数宣言よりも短く記述できます。 暗黙のリターン: =>
-
JavaScriptのファーストクラス関数とは?特徴と使い方を実例で解説
ファーストクラス関数(第一級関数)とは? JavaScriptでは、関数もオブジェクトの一種として扱われます。そのため、関数を別の関数の引数(パラメータ)として渡したり、関数の中で別の関数を戻り値として返したりすることが可能です。 このような性質を持つことから、JavaScriptの関数はファーストクラス関数(第一級関数)と呼ばれています。つまり、関数は変数・オブジェクト・配列などに自由に格納できる「値」だということです。 さらに、関数を引数として受け取る、関数を戻り値として返す、あるいはその両方を行う関数は高階関数(Higher Order Function)と呼ばれます。 ファーストクラ