最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

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

IT培训 admin 10浏览 0评论

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

我正在尝试下载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(…)的任何价值 - 我不知道你想要通过什么结果。最后,只需从example函数返回数据(就像你已经做的那样),这样调用者就可以在等待返回的promise之后使用它。

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

我正在尝试下载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(…)的任何价值 - 我不知道你想要通过什么结果。最后,只需从example函数返回数据(就像你已经做的那样),这样调用者就可以在等待返回的promise之后使用它。

发布评论

评论列表 (0)

  1. 暂无评论