我正在创建一个脚本,它将一个照片文件夹作为输入,并返回另一个组织良好的文件夹,其中包含所需尺寸和格式的照片。首先,我创建了根据用户请求创建文件夹的功能。我对我的代码有几个问题。在这种情况下真的有必要使用异步函数吗?我怎样才能进一步优化我的代码?
const path = require("path");
const fs = require("fs");
/**
* Fonction de creation de folder asynchrone.
* @param {string} outputFolder Path to output folder.
* @param {Array.<string> } formats An array of the format needed in return.
* @param {Array.<number>} size An array of number representing the size needed in return.
* @returns {boolean} return true if success
*/
const asyncCreateFolder = async (outputFolder, formats, sizes) => {
if (fs.existsSync(outputFolder)) {
throw new Error(
`Folder ${outputFolder} Already exists ! \n You need to create a new folder or delete this one`
);
}
for (const format of formats) {
const formatFolder = path.join(outputFolder, format);
for (const size of sizes) {
const sizeFolder = path.join(formatFolder, size.toString());
await fs.promises.mkdir(sizeFolder, { recursive: true });
}
}
return true;
};
module.exports = asyncCreateFolder;
此代码定义了一个名为
asyncCreateFolder
的异步函数,它根据提供的 outputFolder
路径、formats
字符串数组和 sizes
数字数组创建文件夹结构。
函数检查
outputFolder
是否已经存在,如果存在则抛出错误,否则继续创建文件夹结构。
对于
formats
数组中的每种格式,该函数使用outputFolder
在path.join()
中创建一个子文件夹,它将outputFolder
路径与当前格式连接起来。
对于
sizes
数组中的每个尺寸,该函数在上一步创建的格式文件夹中创建一个子文件夹。在用于创建子文件夹之前,大小被转换为字符串。
fs.promises.mkdir()
方法用于创建子文件夹。 { recursive: true }
选项用于创建不存在的父目录。
如果文件夹结构创建成功,函数返回
true
代码开头需要
path
和fs
模块,以便能够在函数中使用它们的方法。 module.exports
语句用于将 asyncCreateFolder
函数导出到需要它的其他模块。