使用 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 后能够使用它。
我正在尝试下载 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 后能够使用它。