为什么babel将async/await转换为再生器
Why does babel translate async/await to regenerators?
所有版本的babel都将await
语句转换为_asyncToGenerator
调用,它显然有一些缺点:
- 代码大小急剧增长
- 需要
regeneratorRuntime
库
根据我对语法的理解,我认为任何await
都应该等效于Promise#then
调用,因此下面的代码:
try {
let user = await getUser();
console.log(user.name);
}
catch (error) {
console.error(error);
}
相当于:
let promise$of$getUser$ = getUser();
$promise$of$getUser$.then(
$result$ => console.log($result$),
$error$ => console.error($error$)
);
通过这种方式,还可以正确地将多个await
语句,甚至是Promise#then
和await
语句的混合映射到Promise
链,因此我必须错过一些纯Promise#then
不适合await
语句的情况。
您可以使用其他两个插件:async to generator和async to module方法。
还有一个名为kneden的实验插件,它确实尝试按照你的建议进行(async to promise)。它仍然是在制品,并不能解释所有情况,很可能无法解释。
我认为您忽略了循环:
for (let userId of userIds) {
const user = await getUser(userId);
console.log(user);
}
相关文章:
- 带时区的Javascript Datestring转换器
- 带Js的货币转换器
- 将jquery选择器转换为数组
- Cordova图像选取器转换为base64
- Ajax调用OGRE转换器
- SVG元素在转换后会丢失事件侦听器
- JavaScript中的温度转换器(IF ELSE条件)
- PDF到JPG的转换器
- 使用PageMod将所有文本框转换为所见即所得HTML编辑器
- 如何将日期选择器返回的日期格式转换为其他格式
- 数据互绑定问题:转换器只运行一次,无法绑定元素的 ID
- JavaScript:将所见即所得编辑器对实时站点的更改转换为jQuery操作
- 如何在角度引导日期选择器中转换日期格式
- 未定义再生器运行时
- 货币转换器未转换
- 显示Aurelia值转换器上的所有过滤器
- AngularJS希伯来文日期转换器
- 带有JSONp的货币转换器
- 从日期选择器中获取默认格式的日期,并在jquery UI中转换为其他格式
- 为什么babel将async/await转换为再生器