BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 David Iffland 关注 4 他的粉丝 ,译者 刘振涛 关注 22 他的粉丝 发布于 2015年10月19日. 估计阅读时间: 3 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

即将到来的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账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT