你能帮我改进我的功能吗?

问题描述 投票:0回答:0

我正在创建一个脚本,它将一个照片文件夹作为输入,并返回另一个组织良好的文件夹,其中包含所需尺寸和格式的照片。首先,我创建了根据用户请求创建文件夹的功能。我对我的代码有几个问题。在这种情况下真的有必要使用异步函数吗?我怎样才能进一步优化我的代码?

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
函数导出到需要它的其他模块。

javascript node.js asynchronous node.js-fs
© www.soinside.com 2019 - 2024. All rights reserved.