はじめに
この実験では、JavaScript を使った非同期プログラミングにおける関数合成の概念を探求します。pipeAsyncFunctions
関数を使って、単一の引数を受け取り、通常の値、Promise
、または async
であることができる一連の非同期関数を合成する方法を学びます。この実験が終了するとき、関数合成を使ってより効率的で読みやすい非同期コードを書く方法を十分に理解しているでしょう。
This tutorial is from open-source community. Access the source code
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
この実験では、JavaScript を使った非同期プログラミングにおける関数合成の概念を探求します。pipeAsyncFunctions
関数を使って、単一の引数を受け取り、通常の値、Promise
、または async
であることができる一連の非同期関数を合成する方法を学びます。この実験が終了するとき、関数合成を使ってより効率的で読みやすい非同期コードを書く方法を十分に理解しているでしょう。
JavaScript でコーディングを練習するには、ターミナル/SSH を開いて node
と入力します。基本に慣れたら、非同期関数を使い始めることができます。
pipeAsyncFunctions
関数を使うと、非同期関数を左から右に関数合成できます。その仕組みは以下の通りです。
...
) を使って、これらの関数を pipeAsyncFunctions
関数に個別の引数として渡します。async
で await
を通じて返すことができます。reduce()
メソッドと Promise.prototype.then()
を使って関数合成を行います。reduce()
メソッドは関数を反復処理し、順番に各関数を実行して、1 つの関数の結果を次の関数に渡します。数値を合計するために pipeAsyncFunctions
を使う方法の例を以下に示します。
const sum = pipeAsyncFunctions(
(x) => x + 1,
(x) => new Promise((resolve) => setTimeout(() => resolve(x + 2), 1000)),
(x) => x + 3,
async (x) => (await x) + 4
);
(async () => {
console.log(await sum(5)); // 15 (1 秒後)
})();
この例では、sum
は入力数値に異なる値を加算する 4 つの関数で構成されています。sum
の最終値は、各関数を順番に実行した結果で、2 番目の関数には 1 秒間の遅延があります。最後の関数には async
キーワードを使って await
を使用できるようにしています。
pipeAsyncFunctions
を使うことで、任意の数の非同期関数を簡単に合成して、より複雑な機能を作成することができます。
おめでとうございます!あなたは「非同期関数をパイプする」実験を完了しました。あなたの技術を向上させるために、LabEx でさらに実験を練習することができます。