特定のキーと値を持つディレクトリ内のすべてのファイルを返す以下のコードがあります。ブール値を持つisDirectoryになりたいキーの1つ。ノード約束の返された値を持つプロミスの戻りオブジェクト
以下のコードはうまく動作しますが、私は約束を超えるPromise.all /反復処理を削除する方法があった場合は疑問に思って、代わりに私のマップで直接私のファイルオブジェクトにstat.isDirectory()
の解決された値を押しました。
私のソリューションは、私が試みたが、失敗しました:
が、私はこのような何か試してみました:
isDirectory: fs.statAsync(path).then((stat) => stat.isDirectory())
をそしてすべてのisDirectory
キー
ワーキングコードにPromise.allの操作を行います。
const Promise = require('bluebird'),
os = require('os'),
_ = require('lodash'),
fs = Promise.promisifyAll(require('fs')),
desktopPath = `${os.homedir()}/Desktop`;
let files = [];
return fs.readdirAsync(desktopPath)
.then((filesName) => files = _.map(filesName, (fileName) => ({
path: `${desktopPath}/${fileName}`,
name: fileName,
ext: _.last(fileName.split('.'))
})))
.then(() => Promise.all(_.map(files, (file) => fs.statAsync(file.path))))
.then((stats) => _.forEach(stats, (stat, idx) => {
files[idx].isDirectory = stat.isDirectory();
}))
.then(() => {
console.log(files);
})
最後にPromise.allと_.forEach部分を削除する必要はありますか?代わりに私の地図でその行動をしますか?あなたは、最新のノードを使用していると仮定すると、