BT

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

Chrome 39新增Beacon API和ES6 Generator支持

| 作者 James Chesters 关注 2 他的粉丝 ,译者 谢丽 关注 11 他的粉丝 发布于 2014年12月5日. 估计阅读时间: 4 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

谷歌的Chrome团队发布了Chrome 39的稳定版本,更新包括Web应用程序Manifest规范、Beacon API和ES6 Generator支持。

Chromiun仪表板页面介绍,Web应用程序Manifest规范定义了“一个基于JSON的Manifest文件”:

……它为开发人员提供了一个集中存放应用程序相关元数据的地方。这包括,但不限于,Web应用程序名称、图标链接以及用户启动Web应用程序时的首选URL。

Manifest还允许开发人员指定Web应用程序的默认方向以应用程序在用户代理上的显示方式(比如全屏)。

Chrome 39的稳定版本还引入了Beacon API,并将其定义为“一种互操作方法,站点开发人员可以用它从用户代理向Web服务器传输少量的HTTP数据。”

在为网站HTML5Rocks写的文章《在Chrome 39中发送Beacon数据》中,谷歌开发者计划工程师Ewa Gasperowicz详细描述了Beacon。

按照Gasperowicz的说法,使用Beacon,

开发人员可以从浏览器向Web服务器异步发送数据有效载荷较小的HTTP请求,而不会延迟页面unload事件中其它代码的执行或者影响下一步页面导航的性能。

navigator.sendBeacon()方法会尽快将需要浏览器传输的数据存入队列,而不会降低导航速度。如果浏览器能够将待传输的数据存入队列,那么该方法就会返回true,否则,返回false。

也是在网站HTML5Rocks上,谷歌开发者关系工程师Jeff Posnick在文章《Generator使用技巧》中将Generator描述为:

创建迭代器的特殊函数,而迭代器是有next()方法的对象,调用该方法可以获取一个值。

在Generator函数里,关键词yield为next()方法提供值。使用yield暂停Generator函数的执行,保留状态直到next()方法被再次调用,这时,代码会重新启动继续运行,直到生成了另外一个值(或者Generator函数终止)。

通过支持ES6 Generator,Chrome允许开发人员创建迭代器,它在生成一个值后会暂停执行,并在被调用时恢复。

在博文《Chrome 39 Beta测试版:JS Generator、Animation Playback Control及WebApp Manifest》中,谷歌软件工程师Mounir Lamouri写到,这“极大地简化了开发异步代码的过程,并且减少了对回调函数的依赖。”

不过,在Reddit上关于Chrome 39(现在已经稳定)提供Generator支持的讨论中,并不是社区里的每个人都完全清楚Generator的优点。用户piglet24问到,“对于已经是异步,并且使用了回调或Promises的代码,我不知道Generator能如何对其进行简化。这看上去与C#中的yield return非常相似。”

用户voidvector回复到:

我觉得你了解C#中的async/await。

yield和await都是暂停当前函数执行的语法,并且允许上述函数稍后在相同的上下文中恢复。因此,你可以编写一个(协程)框架,使用yield实现await,反之亦然。“暂停函数执行并在稍后恢复”这种情况用一个抽象概念描述的话,称为“延续性(Continuation)”。yield和async/await都是它的一种形式。

这里有一个Generator的演示示例。

Chrome 39还支持Mac 64位,并包含若干安全方面的更新。Chrome 40的稳定版本预计在2015年1月发布。

参考英文原文:Chrome 39 Brings Beacon API and ES6 Generators

评价本文

专业度
风格

您好,朋友!

您需要 注册一个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