如何解决NodeJS异步等待功能下载,上传,删除文件,无需等待上传完成
我正在使用GCP存储存储一些我在本地下载的图像,然后将其上传到GCS,然后在本地删除。问题是,尽管一切都按顺序进行,但我的函数在删除对象之前不会等待上传完成。这就是我所拥有的:
request.head(img_url,(err,res,body) => {
request(img_url)
.pipe(fs.createWriteStream(local_path))
.on("close",() => {
console.log("Downloaded: " + local_path);
console.log("Uploading...");
storage.bucket("my_bucket").upload(local_path,{
metadata: {
contentType: content_type
},destination: storage_path
}).then(() => {
console.log("Uploaded: " + storage_path);
console.log("Deleting local file...");
fs.unlinkSync(local_path);
console.log("Deleted local file");
})
})
})
输出顺序正确:
Downloaded: ../temp/some_file.jpg
Uploading...
Uploaded: my_bucket/some_file.jpg
Deleting local file...
Deleted local file
问题在于文件似乎有机会被上传之前已被删除。我可以说出来,因为如果我注释掉fs.unlinkSync
,它就可以工作,并且该文件会显示在我的存储分区中,但是该文件仍保留在本地。
我对Javascript,Promises和async / await很陌生。我假设我没有在存储上传中正确使用.then(),但是我不确定如何解决此问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。