我正在尝试通过构建一个允许用户下载文件的小应用程序来练习node。我已经将文件保存在S3上,将url保存在mLab DB中,并希望将文件下载到应用程序中,以便在客户端使用url作为href。目前它可以工作,但只下载了一个空文件。我认为这是因为它在文件下载之前就运行了下一个then()。
我当前的代码如下:
(async err => {
const charge = await stripe.charges
// create stripe charge
.create({
...
})
// when the payment is successful,
// download the file locally to a 'dist' folder
// so we can use it on the success page
.then(() => {
download(url_to_file, "dist").then(() => {
console.log("done!");
});
})
// then render the success page
.then(
res.render("success", {
fileUrl: ...
})
)
所以在客户端上,我可以(使用ejs)做如下操作:
<a href="<%= /dist/fileUrl %>">下载</a>
我非常新于使用promise,不确定如何等待下载方法完全完成后再运行下一个then并呈现成功页面。
目前,该方法会运行,然后呈现成功页面,随后文件出现在应用程序中。这允许文件被下载,但文件为空。
有人能够指引我正确的方向/解释如何在运行下一个.then()
方法之前等待下载完成吗?任何帮助将不胜感激!
download
;例如:.then(() => { return download(url_to_file, "dist").then(() => { console.log("done!"); }); })
- Scott Rudiger