Chrome 39新增Beacon API和ES6 Generator支持

谷歌的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

你可能感兴趣的:(Chrome 39新增Beacon API和ES6 Generator支持)