[关闭]
@lenville 2015-10-16T23:48:57.000000Z 字数 1187 阅读 1301

InfoQ译文

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

作者 David Iffland 译者 刘振涛

摘要:微软浏览器Edge的预览版目前已经支持JavaScript语法async/await,这一特性可能被加入到ES2016标准中,在浏览器中的初次实现对它而言迈出了重要的一步。

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

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

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

  1. async function getServerData() {
  2. try {
  3. // 一旦promise被解决了,值就会被返回
  4. var json = await getJsonAsync();
  5. }
  6. catch (e) {
  7. // 如果promise被拒绝,代码最终会在catch代码块中结束执行
  8. }
  9. }

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的进程规划进行了一次演讲

查看英文原文:http://www.infoq.com/news/2015/10/async-await-javascript-edge

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注