gpt4 book ai didi

javascript - Node 请求 - 是否想在完成后返回路径/文件名?或者任何最佳实践建议

转载 作者:搜寻专家 更新时间:2023-11-01 00:50:26 24 4
gpt4 key购买 nike

我正在尝试异步下载文件。我可以使用 Promises 来做到这一点。我试图弄清楚如何在完成后返回文件补丁。我花了很多时间试图弄清楚如何让这个东西等到文件被写入磁盘。

如果有更好的方法,不使用回调,我会喜欢任何建议。

这是我的函数。

async function downloadFile(urlToFile, filename) {
return new Promise( resolve => {
const download = request({ url: urlToFile, followAllRedirects: true }).pipe(fs.createWriteStream(filename).on('finish', resolve));
});
};

我在另一个文件中用 await 调用它。

最佳答案

可写流的finish事件实际上并不意味着一切都结束了。它仅表示向相关文件写入数据的过程完成。那时,文件描述符仍在打开,文件尚未准备好使用。如果您想检查一切是否真的完成,您将需要使用事件 close

async function downloadFile(urlToFile, filename) {
return new Promise( (resolve, reject) => {
const fstream = fs.createWriteStream(filename);
fstream.on('close', resolve);
fstream.on('error', reject);
const download = request({ url: urlToFile, followAllRedirects: true }).pipe(fstream);
});
};

关于javascript - Node 请求 - 是否想在完成后返回路径/文件名?或者任何最佳实践建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52581171/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com