导入
子任务解决方案:获取路径名称
项目“文件搜索器”中子任务“获取路径名称”的解决方案。
获取路径名称
在此步骤中,将目录路径作为参数传入。返回一个Promise,该 Promise 使用异步函数读取目录。在回调函数中,通过resolve函数返回文件和文件夹的路径数组。
1var getPathNames = (dir) => new Promise(function(res){ 2 fs.readdir(dir, function(err, files){ 3 if (err) res([]); 4 else res(files.map(x => `${dir}/${x}`)); 5 }) 6}) 7 8var test = async () => { 9 await populate_directory(); // 在后台初始化自定义目录 10 var names = await getPathNames('dir'); // 获取 Promise 并等待其解析 11 console.log(names); // 打印 Promise 的输出结果 12} 13test();
上述代码中,箭头函数返回一个Promise 对象,该对象接收一个函数作为参数。这个函数通过 res 参数调用resolve 函数(第 1 行)。在传递给 Promise 对象的函数中,调用异步函数 fs.readdir,读取传入 getPathNames 函数的目录路径。在 fs.readdir 的回调函数中,需处理以下两种情况:
- 若发生错误,通过 resolve 函数返回一个空数组(第 3 行)。
- 若无错误,将获取到的文件数组(每个元素为字符串)中的每个文件名前加上当前目录路径
dir,并用'/'字符连接(第 4 行)。
当目录存在时,我们的 Promise 将解析为包含文件和文件夹路径的数组;否则,返回一个空数组。