{ const-6ren">
gpt4 book ai didi

javascript - 递归函数从 "filetree"提取所有文件

转载 作者:行者123 更新时间:2023-12-02 20:58:56 24 4
gpt4 key购买 nike

尝试从文件夹及其所有子目录中提取所有文件。针对外部 api 调用目录的内容。

export const extractFiles = (filesOrDirectories) => {
const files = [];
const getFiles = (filesOrDirectories) => {
filesOrDirectories.forEach(async fileOrDirectory => {
if (fileOrDirectory.type === 'directory') {
const content = await getDirectoryContent(fileOrDirectory.id);
getFiles(content);
} else {
files.push(fileOrFolder)
}
});
}
// files should be returned here when it's done. But how do I know when there are no more directories
};

一个递归函数,在创建目录时调用自身。否则将文件推送到数组。

但是我怎么知道什么时候没有更多的目录可供提取?

最佳答案

当函数结束时,您将知道不再有目录可供探索。

但是应该注意的是,由于您的 extractFiles 函数中有异步代码,因此您必须等待任何后续递归的结果。

export const extractFiles = async(filesOrDirectories) => {
const files = [];
const getFiles = async(filesOrDirectories) => {
for (const file of filesOrDirectories) {
if (fileOrDirectory.type === 'directory') {
const content = await getDirectoryContent(fileOrDirectory.id);
await getFiles(content);
} else {
files.push(fileOrFolder)
}
}
}

await getFiles(filesOrDirectories)
return files;
};

const extractedFiles = await extractFiles();

编辑:

请注意,forEach 将在 unexpected ways 中运行与异步代码结合使用时,请重构以使用 for...of 循环。

关于javascript - 递归函数从 "filetree"提取所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61401776/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com