【发布时间】:2018-09-03 10:20:52
【问题描述】:
当我在节点中创建一个异步函数并使用 await 时,我正在等待一个承诺解决(可以是解决或拒绝),我所做的就是放置一个await 在 try/catch 块中承诺并在承诺被拒绝的情况下抛出错误。问题是,当我在 try/catch 块中调用此异步函数以捕获错误时,我会收到 UnhandledPromiseRejectionWarning。但是使用 await 的全部意义不是等待承诺解决并返回它的结果吗?看起来我的异步函数正在返回一个承诺。
示例 - UnhandledPromiseRejectionWarning 的代码:
let test = async () => {
let promise = new Promise((resolve, reject) => {
if(true) reject("reject!");
else resolve("resolve!");
});
try{
let result = await promise;
}
catch(error) {
console.log("promise error =", error);
throw error;
}
}
let main = () => {
try {
test();
}
catch(error){
console.log("error in main() =", error);
}
}
console.log("Starting test");
main();
【问题讨论】:
标签: javascript node.js async-await