gpt4 book ai didi

javascript - JS async/await - 为什么 await 需要异步?

转载 作者:数据小太阳 更新时间:2023-10-29 03:50:25 27 4
gpt4 key购买 nike

为什么使用 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); }
}

我看到运行时/转译器将 Teams promise 解析为它的值(value),并发出异步信号它“抛出”被拒绝的 promise 。

但是 try/catch 会“捕获”那些被拒绝的 promise,那么为什么 async 和 await 如此紧密地耦合在一起呢?

最佳答案

我不参与 JavaScript 语言设计讨论,但我认为这是出于与 the 相同的原因。 C# language requires async (另见 my blog)。

即:

  1. 向后兼容。如果 await 突然成为到处都是的新关键字,那么任何使用 await 作为变量名的现有代码都会崩溃。由于 await 是上下文关键字(由 async 激活),只有 intends 使用 await 作为关键字的代码将 await 作为关键字。
  2. 更容易解析。 async 使异步代码更容易为转译器、浏览器、工具和人类解析。

关于javascript - JS async/await - 为什么 await 需要异步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44184006/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com