次へthis snippet私は、トラフルをディレクトリに移動し、ディレクトリを検索し、それらのディレクトリからxmlファイル名を読み込む関数を記述しようとしています(フォルダ構造は、同じ)。これまでのところ、私の関数は期待どおりに動作していますが、関数から戻り値を取得しようとすると、私はPromiseオブジェクトを取得します。bluebird - 関数は実際のデータの代わりに約束のオブジェクトを返します
マイコード:
const Promise = require('bluebird');
const fs = Promise.promisifyAll(require('fs'));
const path = require('path');
function getFileNames(rootPath) {
// Read content of path
return fs.readdirAsync(rootPath)
// For every file in path
.then(function(directories) {
// Filter out the directories
return directories.filter(function(file) {
return fs.statSync(path.join(rootPath, file)).isDirectory();
});
})
// For every directory
.then(function(directories) {
return directories.map(function(directory) {
// Read file in the directory
return fs.readdirAsync(path.join(rootPath, directory))
.filter(function(file) {
return path.extname(file) == '.XML';
})
.then(function(files) {
// Do something with the files
return files;
});
});
});
}
getFileNames('./XML').then(function(files) {
console.log(files);
});
I getFileNames
内部の最後.then
関数内console.log(files)
、私はコンソール内のファイル名の実際の配列を取得します。しかし、上記のコードを実行すると、次の出力が得られます。
[ Promise {
_bitField: 0,
_fulfillmentHandler0: undefined,
_rejectionHandler0: undefined,
_promise0: undefined,
_receiver0: undefined },
Promise {
_bitField: 0,
_fulfillmentHandler0: undefined,
_rejectionHandler0: undefined,
_promise0: undefined,
_receiver0: undefined },
Promise {
_bitField: 0,
_fulfillmentHandler0: undefined,
_rejectionHandler0: undefined,
_promise0: undefined,
_receiver0: undefined },
Promise {
_bitField: 0,
_fulfillmentHandler0: undefined,
_rejectionHandler0: undefined,
_promise0: undefined,
_receiver0: undefined },
Promise {
_bitField: 0,
_fulfillmentHandler0: undefined,
_rejectionHandler0: undefined,
_promise0: undefined,
_receiver0: undefined } ]
どうしてこの問題が発生し、修正するのですか?
同じ出力を得ている –
@MihaŠušteršičI edit answer – stasovlas