【发布时间】:2020-03-26 18:38:09
【问题描述】:
我正在尝试为我正在处理的 Udacity 项目编写一个非常简单的 API 端点。当我针对以下端点尝试邮递员时,我收到了一个承诺拒绝警告。我首先尝试使用此端点中的 3 个注释行,但由于它是异步运行的,因此在删除函数运行之前文件不会准备好导致找不到文件。
有什么建议吗?
app.get( "/filteredimage", async ( req, res ) => {
var re = req.query.image_url;
if (!re){
return res.status(400).send(`id is required`);
}
var myfun = function (data, callback) {
var filteredpath = filterImageFromURL(data);
callback([filteredpath]);
};
myfun(re,deleteLocalFiles);
// let filteredpath = filterImageFromURL(re);
// res.sendFile(filteredpath);
// deleteLocalFiles([filteredpath]);
} );
这里是 util 函数:
export async function filterImageFromURL(inputURL: string): Promise<string>{
return new Promise( async resolve => {
const photo = await Jimp.read(inputURL);
const outpath = '/tmp/filtered.'+Math.floor(Math.random() * 2000)+'.jpg';
await photo
.resize(256, 256) // resize
.quality(60) // set JPEG quality
.greyscale() // set greyscale
.write(__dirname+outpath, (img)=>{
resolve(__dirname+outpath);
});
});
}
// deleteLocalFiles
// helper function to delete files on the local disk
// useful to cleanup after tasks
// INPUTS
// files: Array<string> an array of absolute paths to files
export async function deleteLocalFiles(files:Array<string>){
for( let file of files) {
fs.unlinkSync(file);
}
}
【问题讨论】:
标签: node.js asynchronous callback