使用FS ASync readdir时,将在函数内部创建一个对象,但无法返回

时间:2019-05-01 10:34:44

标签: javascript node.js

我试图编写函数bonus(myPath),希望将其传递给目录的完整路径。在内部,我使用fs.stat捕获文件大小并将其放入对象中。我可以在fs.stat函数中console.log对象,但是不能导出它。你能建议吗?

我尝试在所有地方进行console.logging,以查看丢失的对象。

const fs = require("fs");
const originalPath = __dirname + "/files";

 bonus(originalPath);
 function bonus(myPath) {
    let obj = {};
    fs.readdir(myPath, { withFileTypes: true }, (err, files) => {
        if (err) {
            console.log(err);
        }
        // console.log(files);

         for (let i = 0; i < files.length; i++) {
            // console.log(files[i].name);
            // obj[files[i].name] = "test";
            // console.log(`${myPath}/${files[i].name}`);
            fs.stat(`${myPath}/${files[i].name}`, (err, stat) => {
                if (err) {
                    console.log(err);
                }
                // console.log(stat.size);
                // console.log(files[i].name);
                obj[files[i].name] = stat.size;
                console.log(obj); // this works!
                return obj;
            });
        }
        console.log(obj); // this is empty!
    });
  }

预期结果:返回填充的对象 实际结果:返回空对象。

0 个答案:

没有答案