非同期関数から Promise への変換

Beginner

This tutorial is from open-source community. Access the source code

はじめに

この実験では、promisify 関数を使って非同期関数を Promise を返す関数に変換する方法を学びます。これにより、コールバック関数を避けて、クリーンで読みやすいコードを書くことができます。また、JavaScript におけるカリングと残余引数演算子の使い方についても検討します。

これは Guided Lab です。学習と実践を支援するためのステップバイステップの指示を提供します。各ステップを完了し、実践的な経験を積むために、指示に注意深く従ってください。過去のデータによると、この 初級 レベルの実験の完了率は 82%です。学習者から 100% の好評価を得ています。

promisify 関数

非同期関数を Promise を返す関数に変換するには、次の手順に従います。

  1. ターミナル/SSH を開き、コーディングを練習するために node と入力します。
  2. カリングを使って、元の関数を呼び出す Promise を返す関数を返します。
  3. 残余引数演算子 (...) を使ってすべてのパラメータを渡します。
  4. Node 8+ を使っている場合、util.promisify を使うことができます。
  5. 以下はコードの例です。
const promisify =
  (func) =>
  (...args) =>
    new Promise((resolve, reject) =>
      func(...args, (err, result) => (err ? reject(err) : resolve(result)))
    );
  1. この関数を使うには、非同期関数を定義して、それを promisify 関数のパラメータとして渡します。返される関数は現在 Promise を返します。
const delay = promisify((d, cb) => setTimeout(cb, d));
delay(2000).then(() => console.log("Hi!")); // Promise resolves after 2s

delay 関数は、promisify 関数を使って現在 Promise を返す非同期関数の例です。

まとめ

おめでとうございます!あなたは promisify 関数の実験を完了しました。あなたの技術を向上させるために、LabEx でさらに実験を行って練習することができます。