我对许诺是个新手,我知道问题是我要在许诺解决之前读数组。如果我只是console.log它们打印的文件很好,只需要它们在一个数组中,这样我就可以遍历它们了。
有人能把我推到正确的方向吗?我正在使用recursive-readdir节点模块获取dir1和dir2目录中所有文件的列表,并将它们添加到数组(var sitemap)中。
var recursive = require("recursive-readdir");
var directories = ['dir1', 'dir2'];
var sitemap = [];
for(var i = 0; i < directories.length; i++) {
recursive(directories[i], ["*.pdf", "*.json", "*.xml", "*.jpg", "*.gif", "*.png", "*.css", "*.js", "*.flv", "*.swf", "*.ttf", "*.pptx", "*.doc", "*.docx"], function (err, files) {
for(var x = 0; x < files.length; x++) {
let url = 'example.com/' + files[x];
addURL(url);
}
});
}
function addURL(url) {
sitemap.push(url);
}
// Returns empty array
console.log(sitemap);
下面的代码可以工作,添加了console.log(站点地图)在Promise中,请检查
null
const recursive = require("recursive-readdir");
const directories = ['dir1', 'dir2'];
const sitemap = [];
const extns = ["*.pdf", "*.json", "*.xml", "*.jpg", "*.gif", "*.png", "*.css", "*.js", "*.flv", "*.swf", "*.ttf", "*.pptx", "*.doc", "*.docx"];
const allRequests = directories.map((item) => {
return recursive(item, extns);
});
Promise.all(allRequests).then((files) => {
for (let x = 0; x < files.length; x++) {
let url = 'example.com/' + files[x];
addURL(url);
}
console.log(sitemap);
});
function addURL(url) {
sitemap.push(url);
}
//console.log(sitemap);