微软在 Edge 预览版中支持 Async/Await 特性

阅读数:1186 2015 年 10 月 18 日 19:00

即将到来的 ES 2016 中有一个 async/await 特性,微软浏览器 Edge 目前已支持这一特性,在Edge 最新的预览版中仍需开启实验性标志位才能进一步体验,但是想要在未来被广泛接受,走出这一步至关重要。

JavaScript 天生是异步的,功能非常强大,但与此同时,开发者想要实现简单的功能却需要写非常多的代码,“回调地狱”是每一个开发者的伤痛。就在几年前,开发者们开始拥抱 promise ,从此你就可以用一种更好的方法来处理异步代码。promise 先进的理念使得它成为 ES6 中不可或缺的一部份。

传统的 promise 需要将所有的回调代码块连接起来, async/await 特性比 promise 更进一步,消除了这一方面的顾虑。在下面的示例中,getJsonAsync 函数返回一个 promise,代码中 async/await 的作用是让开发者以更偏向同步的方式来连接 promise。

复制代码
async function getServerData() {
try {
// 一旦 promise 被解决了,值就会被返回
var json = await getJsonAsync();
}
catch (e) {
// 如果 promise 被拒绝,代码最终会在 catch 代码块中结束执行
}
}

C#开发者可能会发现这样的语法似曾相识:微软在 C# 5.0 中引入了 async/await 特性,有了这个特性,开发者可以用同步的方式书写异步代码,不需要显示地连接这么多代码。async/await 同样也是 JavaScript 种的语法糖,大大减少使用样板代码的需求。

这个特性是 Windows 内部程序的一部份,在 build 10547 中可用。一定要在about:flags窗口中启用“启用实验性 JavaScript 特性”标志位。

到目前为止,其它浏览器尚未支持这一特性。然而,转译器 Babel 早已将它作为实验性特性实现了出来。其它浏览器马上也会跟进,Mozilla 正在紧锣密鼓地实现中

在浏览器中实现这个特性是它在 ECMAScript 标准进程中的一个里程碑,async/await 目前处于“候选提案”的第 3 阶段。对于一个提案而言,想要推进到最终的第 4 阶段,必须要经过代码实现的过程。Brian Terlson 是 async/await 的拥护者,他在 2015 年纽约 Qcon 大会上围绕这一特性以及 TC39 组织关于 ES2016 的进程规划进行了一次演讲

查看英文原文 Microsoft Enables Async/Await in Edge Preview Build

收藏

评论

微博

用户头像
发表评论

注册/登录 InfoQ 发表评论