gpt4 book ai didi

javascript - 如果我想使用 wait,为什么 Javascript (ES.next) 会强制我将函数声明为异步?

转载 作者:行者123 更新时间:2023-12-03 06:45:28 25 4
gpt4 key购买 nike

编译器/解析器似乎应该足够聪明,能够检测函数是否使用 await 然后它会自动成为 async 函数。

为什么我被迫输入 async 关键字?它增加了困惑,很多时候我忘记添加它并且收到错误,然后我必须去添加它。

让编译器在看到 await 时自动将函数提升为 async 并避免每个人处理它的麻烦,会有什么缺点吗?

最佳答案

将异步函数与 ES6 生成器函数进行比较,结果非常明显:

function* x() {} // Generator function without 'yield'
Object.getPrototypeOf(x); // returns GeneratorFunction

生成器函数本质上与传统函数不同,但它们的函数体内不需要有 yield 表达式。实际上有a bug in the ES6 proposal其中指出,如果生成器函数不包含 yield,则这是一个语法错误,但很快就得到了修复:

One important use case is prototyping with a dummy generator. Or the case where you comment out a yield for debugging. That shouldn't render the program illegal.

异步函数也是如此:根据the draft ,异步函数不需要在其主体中包含 await,同时仍具有与传统函数不同的行为。

假设您注释了 await 。然后解释器是否应该将您的异步函数解析为传统函数并可能破坏您的整个代码?最好不要。

关于javascript - 如果我想使用 wait,为什么 Javascript (ES.next) 会强制我将函数声明为异步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37759050/

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