NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

Chrome 39 新增 Beacon API 和 ES6 Generator 支持

  • 2014-12-04
  • 本文字数:1287 字

    阅读完需:约 4 分钟

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

2014-12-04 06:312494
用户头像

发布了 1008 篇内容, 共 374.2 次阅读, 收获喜欢 341 次。

关注

评论

发布
暂无评论
发现更多内容

数据结构-复杂度计算经典案例

芒果酱

数据结构 算法 5月月更

架构学习(一)

爱晒太阳的大白

5月月更

谷歌三件套 - Bigtable

懒时小窝

bigtable 谷歌 谷歌三件套

linux之crontab使用技巧

入门小站

Linux

在线蚂蚁文,菊花文生成工具

入门小站

工具

在线HTML转JSON工具

入门小站

工具

Linux 入门及常见Shell命令

宇宙之一粟

Linux Shell 5月月更

数学建模学习资料

乌龟哥哥

5月月更

SpringMVC源码分析:POST请求中的文件处理

程序员欣宸

Java spring 5月月更

【刷题第16天】数组中出现次数超过一半的数字

白日梦

5月月更

C++最佳实践 | 1. 工具

俞凡

c++ 最佳实践

模块6作业提交

KennyQ

模块六作业 微服务拆分

库尔斯

架构实战营

小公司里面的 Python 后端,数据库(MySQL)到底要学习到什么程度?

梦想橡皮擦

5月月更

Amazon CodePipeline 与 GitHub 集成

亚马逊云科技 (Amazon Web Services)

GitHub Code

密码学系列之:在线证书状态协议OCSP详解

程序那些事

密码学 程序那些事 5月月更

Flutter 使用 Provider 实现嵌套状态管理

岛上码农

flutter ios 安卓开发 跨平台开发 5月月更

flask框架【入门学习笔记一】

恒山其若陋兮

5月月更

[ CloudWeGo 社区动态 ] Kitex 电商项目案例

baiyutang

Go 微服务 5月月更

Kubernetes 节点弹性扩展实践组件 Amazon Karpenter:部署 GPU 推理应用

亚马逊云科技 (Amazon Web Services)

Kubernetes 部署

如何透过 Serverless 与 API 的方式异步搜寻数据湖中的数据

亚马逊云科技 (Amazon Web Services)

Serverless 数据 API

【C 语言】指针 Five 之 ["⚔ 野指针,🗡 如何规避野指针,💣 指针的未初始化,💣指针越界访问"]

謓泽

C语言 5月月更

VS Code配置markdown代码片段

空城机

前端 vscode 5月月更

Sentinel介绍与使用 收藏起来

牧小农

sentinel

SAP OData V4 模型支持的一些数据绑定模式

Jerry Wang

JavaScript 前端开发 SAP ui5 5月月更

react-router原理分析

正经工程师

React React-Router

从“数据”到“大数据”,激发数据潜力,深耕智能应用!

亚马逊云科技 (Amazon Web Services)

大数据 数据 智能开发

Java Core「1」JUC-线程基础

Samson

学习笔记 5月月更 Java core

电商系统微服务拆分

Trent

架构 微服务拆分 电商 训练营

PostgreSQL出现死锁怎么办?

慕枫技术笔记

数据库 5月月更

LinkedList 源码分析-迭代器

zarmnosaj

5月月更

Chrome 39新增Beacon API和ES6 Generator支持_JavaScript_James Chesters_InfoQ精选文章