提问者:小点点

NodeJS从recursive-readdir填充数组


我对许诺是个新手,我知道问题是我要在许诺解决之前读数组。如果我只是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);

共1个答案

匿名用户

下面的代码可以工作,添加了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);