我的NodeJS应用程序中有一个工作区清理功能,可以获取目录路径列表并删除它们。当函数收到路径列表时,它使用
Promise.all()
要以以下方式同时执行这些删除:
/**
* Deletes directories.
*
* @param {Array} directories Array of directories to be deleted.
*
* @returns {Object} Response object with the status code and data.
*/
const cleanup = async (directories) => {
if (!Array.isArray(directories)) {
// Respond with a 400 error to client.
}
if (!directories.length > 0) {
// Respond with a 400 error to client.
}
try {
const promisesList = await Promise.all(
directories.map((d) => deleteDirectory(d))
);
// Respond with a 207 multi status message to client.
} catch (err) {
// Respond with a 500 error to client.
}
};
/**
* Performs a force delete on a provided directory.
*
* @param {String} directory Path of the directory to be deleted.
*
* @returns {Object} Response object with the status code and data.
*/
const deleteDirectory = async (directory) => {
console.log(`Deleting directory: ${directory}`);
try {
if ((await fs.stat(directory)).isDirectory()) {
await fs.rm(directory, { recursive: true, force: true });
// Return a 200 message.
}
} catch (err) {
if (err.message.includes("no such file or directory")) {
// Return a 404 error.
}
// Return a 500 error.
}
};
我想在内存中实现一个超时功能
deleteDirectory()
这将取消长时间运行的单个删除操作。这个
fs
模块似乎没有任何内在的东西来执行这样的事情。
显然,我可以有一个超时,然后函数返回。但是,这意味着删除操作仍在该目录的文件系统上运行。
我如何在超时后终止删除操作?任何建议和/或例子都会非常有用。