【发布时间】:2020-06-28 15:28:44
【问题描述】:
我尝试使用 react-native-fs 获取文件夹中可用的所有文件和目录。
我创建了一个函数来递归获取文件夹中的所有文件和目录,我这样调用这个函数:
const data = await scanDir(path);
我第一次尝试使用 .map() 函数,但我的函数只返回一些元素:
async function scanDir(pathOfDirToScan, data = {directory: [], files: []}) {
const readedFilesAndDir = await FS.readDir(pathOfDirToScan);
Object.keys(readedFilesAndDir).map(async key => {
if (readedFilesAndDir[key].isDirectory()) {
const directoryPath = pathOfDirToScan + '/' + readedFilesAndDir[key].name;
data.directory.push(directoryPath);
data = await scanDir(directoryPath, data);
} else {
data.files.push(pathOfDirToScan + '/' + readedFilesAndDir[key].name);
}
});
return data;
}
似乎我的函数在第一次执行 map 后返回数据,但之后函数继续。
然后我尝试使用 for 循环,它按预期工作:
async function scanDir(pathOfDirToScan, data = {directory: [], files: []}) {
const readedFilesAndDir = await FS.readDir(pathOfDirToScan);
for (let i = 0; i < readedFilesAndDir.length; i++) {
if (readedFilesAndDir[i].isDirectory()) {
const directoryPath = pathOfDirToScan + '/' + readedFilesAndDir[i].name;
data.directory.push(directoryPath);
data = await scanDir(directoryPath, data);
} else {
data.files.push(pathOfDirToScan + '/' + readedFilesAndDir[i].name);
}
}
return data;
}
我应该怎么做才能使用 .map() 使函数正常工作?
【问题讨论】:
标签: react-native array.prototype.map react-native-fs