【发布时间】:2017-04-14 12:39:48
【问题描述】:
我正在深入研究 node 7 的 async/await 功能,并不断遇到这样的代码
function getQuote() {
let quote = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
return quote;
}
async function main() {
try {
var quote = await getQuote();
console.log(quote);
} catch (error) {
console.error(error);
}
}
main();
这似乎是使用 async/await 解决/拒绝或返回/抛出的唯一可能性,但是,v8 没有优化 try/catch 块中的代码?!
有其他选择吗?
【问题讨论】:
-
“等待不成功后抛出”是什么意思?如果出错?如果它没有返回预期的结果?你可以在 catch 块中重新抛出。
-
afaik v8 优化 try/catch,一个 throw 语句是慢的
-
我还是不明白这个问题。你范使用旧的承诺链,但我不认为它会更快。所以你关心try-catch的性能?那跟 async await 有什么关系呢?
-
检查我的答案我试图获得更清洁的方法
-
这里你可以这样做stackoverflow.com/a/61833084/6482248它看起来更干净
标签: node.js async-await ecmascript-2017