为什么使用await需要声明的外部函数async?
例如,为什么这个mongoose语句需要它返回一个promise的函数?
async function middleware(hostname, done) {
try {
let team = await Teams.findOne({ hostnames: hostname.toLowerCase() }).exec();
done(null, team);
} catch (err) { done(err); }
}
Run Code Online (Sandbox Code Playgroud)
我看到运行时/转换器解析了团队对它的价值的承诺和异步信号,它"抛出"被拒绝的承诺.
但是try/catch"捕获"那些被拒绝的承诺,那么为什么异步并等待如此紧密耦合呢?