如何获得 fs.rename 的结果

How to get result of fs.rename

我正在使用 Node.js 和 fs 模块。上传文件时,我想将其重命名为原始名称并记录更新后的名称(原始名称)。我重命名上传文件的代码工作正常。但是我在打印 fileName 时遇到了问题。

let fileName = "";
form.on('file', function(field, file) {
    fs.rename(file.path, path.join(form.uploadDir, file.name), function(err) {
        if (err != null) {
            console.log(err);
        }
        fileName = path.join(form.uploadDir, file.name);
    });
});

let name = fileName;
console.log("NAME " + name);

我应该怎么做?

编辑:这不是重复问题,因为问题确实是关于 fs.rename,而不是如何绕过异步 属性

根据@pawel 的见解,我使用 promises 解决了这个问题。我不知道在服务器端使用 promises 是否是好的做法 Node.js。

let fileName = "";
let p = new Promise((resolve, reject) => {
    form.on('file', function (field, file) {
        fs.rename(file.path, path.join(form.uploadDir, file.name), function (err) {
            if (err != null) {
                console.log(err);
                reject(err);
            }
            fileName = path.join(form.uploadDir, file.name);
            resolve(fileName);
        });
    });
});

p.then((fileName) => {
    console.log("NAME " + fileName);
});