【发布时间】:2018-03-12 21:05:15
【问题描述】:
我试图在一个返回承诺的函数上使用异步等待,但我得到的输出是 Promise { <pending> }。在这里,我使用了一个名为 convertFiletoPDF 的函数,它返回一个承诺。我需要得到输出(我在 resolve() 中提到的路径)。
当我使用它时
convertFiletoPDF(file).then((result) => {
console.log(result);
}).catch((err)=>{
console.log(err);
});
它给出了预期的结果。下面的代码有什么问题?我对这些异步等待和承诺很陌生。
function convertFiletoPDF(file) {
return new Promise(function(resolve, reject) {
unoconv.convert(file, "pdf", function(
err,
result
) {
if (err) {
reject(err);
}
let File = file.substring(file.lastIndexOf("/")+1,file.lastIndexOf("."));
// result is returned as a Buffer
fs.writeFile(__dirname+"/files/converted/"+File+".pdf", result, error => {
/* handle error */
if (err) reject(error);
else resolve("./files/converted/"+File+".pdf");
});
});
});
}
async function myfunc(file){
let res = await convertFiletoPDF(file);
return res;
}
let res = myfunc(file);
console.log(res);
【问题讨论】:
标签: javascript promise async-await