fs.readdir の戻り値を Promise で受け取る

結論

以下のように書いた関数の戻り値は Promise となります。

async function currentDirFileNames(path: string) {
  const fs = require('fs')
  const fsPromises = fs.promises

  return fsPromises.readdir(path)
}

1. 戻り値が Promise であることの確認

下記のファイルを app.ts として保存し、実行してみます。

async function currentDirFileNames(path: string) {
  const fs = require('fs')
  const fsPromises = fs.promises

  return fsPromises.readdir(path)
}

console.log(currentDirFileNames('./'))
$ ts-node app.ts
Promise { <pending> }

2. then() を使って具体的な戻り値を取得する

具体的な戻り値を取得してみます。

async function currentDirFileNames(path: string) {
  const fs = require('fs')
  const fsPromises = fs.promises

  return fsPromises.readdir(path)
}

currentDirFileNames('./').then((result) => {
  // ここに具体的な戻り値である result を用いた処理を書く
  console.log(result)
  console.log(Array.isArray(result))
})

上記のファイルを app2.ts と保存し、実行してみます。すると、カレントディレクトリにあるファイル名の一覧を、配列で表示することができます。

$ ts-node app2.ts
[ 'app.ts', 'app2.ts' ]
true

参考

stackoverflow.com

Powered by はてなブログ