为什么使用
例如,为什么mongoose语句需要它所在的函数来返回承诺?
async function middleware(hostname, done) {
try {
let team = await Teams.findOne({ hostnames: hostname.toLowerCase() }).exec();
done(null, team);
} catch (err) { done(err); }
}
我看到Runtime/Transpiler将团队的承诺解析为它的值,并用异步信号通知它“抛出”被拒绝的承诺。
但是try/catch“捕获”那些被拒绝的承诺,那么为什么异步和等待如此紧密地耦合呢?
我不了解JavaScript语言设计的讨论,但我认为这是出于与C#语言需要
即:
抄自https://stackoverflow.com/A/41744179/1483977,电子邮件:@phaux:
这些答案都给出了async关键字为什么是一个好东西的有效论据,但没有一个真正提到必须将其添加到规范中的真正原因。
原因是这是一个有效的JS pre-ES7
function await(x) {
return 'awaiting ' + x
}
function foo() {
return(await(42))
}
根据您的逻辑,
所以答案是:
有趣的事实:最初的规范为异步语法提出了更轻量级的