【发布时间】:2016-04-09 12:47:15
【问题描述】:
所有版本的 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 语句。
【问题讨论】:
标签: javascript babeljs ecmascript-harmony