Nach this snippet Ich versuche, eine Funktion zu schreiben, die durch ein Verzeichnis durchläuft, Verzeichnisse findet und Xml - Dateinamen aus diesen Verzeichnissen liest (ich weiß, dass die Ordnerstruktur immer die bleibt) gleich). Bis jetzt funktioniert meine Funktion wie erwartet, aber wenn ich versuche, die Rückkehr von der Funktion zu bekommen, bekomme ich nur Promise-Objekte.bluebird - Funktion gibt Versprechungsobjekte anstelle von tatsächlichen Daten zurück
Mein Code:
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);
});
Wenn ich console.log(files)
innerhalb der letzten .then
Funktion innerhalb getFileNames
ich die tatsächlichen Arrays von Dateinamen in der Konsole. Aber wenn ich führen Sie den Code oben ich diese Ausgabe erhalten:
[ 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 } ]
Warum ist das passiert und wie man es beheben?
stil immer die gleiche Ausgabe –
@ MihaŠušteršič Ich bearbeite Antwort – stasovlas