使用 Node.js 将 createWriteStream txt 内容写入全局变量

Write createWriteStream txt contents to a global variable with Node.js

我正在尝试下载 txt 和 mp3 文件并在另一个节点模块中使用它们的内容。

如何使用下载的 txt(以及稍后阶段的 MP3)文件中的管道内容创建全局变量以在 FTP 函数之外使用?

async function example() {
    var finalData = '';

    const client = new ftp.Client()
    client.ftp.verbose = true
    try {
    await client.access({
        host: "XXXX",
        user: "XXXX",
        password: "XXXX",
    })


    await client.upload(fs.createReadStream("README.txt"), myFileNameWithExtension)
    //let writeStream = fs.createWriteStream('/tmp/' + myFileNameWithExtension);
    //await client.download(writeStream, myFileNameWithExtension)

    finalData = await (() => {
        return new Promise((resolve, reject) => {

        writeStream
            .on('finish', () => {

            // Create a global variable to  be used outside of the FTP function scope to pipe the txt content into another node mogule

            })
            .on('error', (err) => {
            console.log(err);
            reject(err);
            })
        })
    })();
    }
    catch (err) {
    console.log(err)
    }
    client.close();
    return finalData;
}

不,不要创建任何全局变量。只需用数据解决承诺:

var finalData = await new Promise((resolve, reject) => {
    writeStream.on('finish', () => {
        resolve(); // pass a value
    }).on('error', (err) => {
        reject(err);
    });
});

finalData 将成为您传递给 resolve(…) 的任何值 - 我不知道您想传递给那里的结果是什么。最后,只需 return 来自 example 函数的数据(就像您已经做的那样),以便调用者在等待 returned promise 后能够使用它。