似乎编译器/解析器应该足够聪明,可以检测某个函数是否使用了await
它,然后它自动成为一个async
函数。
为什么我被迫输入async
关键字?它增加了混乱,并且很多时候我忘记添加它,但是却出现错误,因此我不得不去添加它。
让编译器async
在看到该功能时自动将该功能升级为新功能,await
而又只是为每个人省去了处理该功能的麻烦,会不会有任何不利之处?
将异步函数与ES6生成器函数进行比较,这很明显:
function* x() {} // Generator function without 'yield'
Object.getPrototypeOf(x); // returns GeneratorFunction
生成器函数在本质上不同于传统函数,但是它们不需要yield
在体内表达。ES6提案中实际上存在一个错误,该错误指出,如果generator函数不包含,则是语法错误yield
,但很快就将其修复:
一个重要的用例是使用虚拟发生器进行原型制作。或者您注释掉调试收益的情况。那不应该使程序非法。
异步函数也是如此:根据草案,异步函数不需要awaits
在其主体中具有与传统函数不同的功能。
假设您发表评论await
。然后,解释器应该将您的异步函数解析为传统函数,并可能破坏您的整个代码吗?最好不要。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句