节点JS - 递归调用

时间:2018-04-22 16:49:28

标签: node.js

所以,我有一个应用程序来处理目录中的文件,我希望应用程序继续查看新文件的目录,如果发现它将处理它,所以基本上我所做的是再次调用main函数文件不可用,这将使我的应用程序运行,但我收到错误

错误 RangeError:超出最大调用堆栈大小

以下是我的代码`输入代码

的片段
 function main(){
        const names = scan_dir();
        if(names.length <= 0){
            console.log("nothing found in stage directory");
            main();
            return;
        }else{
            console.log(names.length.toString(), "files found");
        }
// Do something
}

    function scan_dir(){
        const names = fs.readdirSync(STAGE_PATH)`enter code here`;
        return names.filter(name => {
            const abs_name = path.join(STAGE_PATH, name);
            const stats = fs.statSync(abs_name);
            return stats.isFile();
        });
    }

1 个答案:

答案 0 :(得分:0)

似乎每当它找不到它再次调用该函数时,你就会从中获得大量的堆栈溢出错误。你可以把它放在循环中并迭代地进行,这样就可以防止它出现这个错误。

search = true
while(search){
    names = scan_dir();
    if(names.length <= 0){
       console.log("nothing found in stage directory");
    }else{
       console.log(names.length.toString(), "files found");
       search = false;
    }
}`