javascript_.promisesってなに?

fs.promisesとは、コールバック地獄を避けるためNode.js 10で追加された書き方

 

参考にしたサイト様

https://tech.chakapoko.com/nodejs/file/promises.html

f:id:sh2ydap3:20210408064646p:plain

 

下記ソース出典

https://www.youtube.com/watch?v=WkLVd2uGU7s&list=PLQEKit6tfVVKkp0ELOyKey_v7I89mxYZI&index=16

// require とは、commonJSの仕様の一つでモジュールの読み込み_再利用しやすくなる
// promise とは、コールバックのネストを避けるPromiseを返すAPI
const fs = require("fs").promises;

async function main() {
  await findSalesFiles("stores")
}

main();

// ファイル名を取得する
async function findSalesFiles(folderName) {
  let salesFiles = [];

  // オプション追加_withFileTypes_パス関連のメタデータを返す
  const items = await fs.readdir(folderName, { withFileTypes: true });

  // sales.jsonが見つかるまで再帰的に走査し、見つかると配列の末尾にファイルパスを追加する
  for (const item of items) {
    // ディレクトリの場合
    if (item.isDirectory()) {
      // 配列結合_salesFilesにファイルパスを結合する
      salesFiles = salesFiles.cancat(
        // プレースホルダ `${~}` に式を入れられる
        // 次々とフォルダ名を結合していく
        await findSalesFiles(`${folderName}/${item.name}`)
      );
    } else {
      // ファイル名に到達した場合
      if (item.name === "sales.json") {
        // ファイルのフルパスを配列末尾に追加する
        salesFiles.push(`${folderName}/${item.name}`);
      }
    }

    return salesFiles;
  }