50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

Dart 增强了异步编程

  • 2015-03-31
  • 本文字数:1179 字

    阅读完需:约 4 分钟

谷歌发布了 Dart 1.9,带来了全新的异步编程支持。

谷歌的产品经理 Kevin Moore 说,本次发布的 1.9 版本在已有的 Future API 的基础上引入了 async 方法和 await 表达式。

开源 web 程序语言一直都是采用 Future API 进行异步操作,但是 Moore 说这很难处理假定的情况和错误。

Moore 在《 Dart 1.9:你翘首以盼的版本》中详细说明了本版本的改进,说开发人员“现在可以使用熟悉的控制流特性——for/while 循环、if 块和 try/catch 去处理复杂的异步交互了。”

谷歌软件工程师 Gilad Bracha 在《 Dart 语言异步支持:阶段 1 》中演示了使用 async 和 await 的好处。

第一个例子没有使用 async 和 await:

复制代码
import "dart:html"
main() {
var context = querySelector("canvas").context2D;
var running = true; // Set false to stop.
tick(time) {
context.clearRect(0, 0, 500, 500);
context.fillRect(time % 450, 20, 50, 50);
if (running) window.animationFrame.then(tick);
}
window.animationFrame.then(tick);
}

Bracha 说,虽然它还不太复杂,但也不“那么简单”,看看我们用新语言特性是如何实现的:

复制代码
import "dart:html";
main() async {
var context = querySelector("canvas").context2D;
var running = true; // Set false to stop game.
while (running) {
var time = await window.animationFrame;
context.clearRect(0, 0, 500, 500);
context.fillRect(time % 450, 20, 50, 50);
}
}

关于 async 方法和 await 表达式,Moore 说,团队也引入了生成器方法 sync* 和 async*,“这更易于生成信号序列”,他说打算“几乎消除所有需要开发人员创建自定义迭代器和手工管理流的情况。”

Dart 1.9 还带来了几个其他重要的更新——包括对枚举的完整支持和一些核心类库的变更。Moore 重点列举了“新模型适用于共享的服务器 socket,不需要 Socket 引用,可在所有平台上实现”,还有 regexp 引擎的改进。

对于 dart:io API,有如下的变化:

  • ServerSocket.bind、RawServerSocket.bind、SecureServerSocket.bind 和 RawSecureServerSocket.bind 方法增加了新的共享参数。
  • 已经将 SocketReference 方法和类标注为已弃用的。
  • Socket 和 RawSocket 静态方法增加了 sourceAddress 参数。

这次发布的新版本受到开发者社区的热烈欢迎。在 Hacker News相关的讨论中, blossom.io 的联合创始人 Thomas Schranz评论说:“恕我直言,这是自1.0 以来最令人兴奋的版本了。”

用户 ahoge 附和了 Schranz 的观点,他说“这是自 1.0 以下最大的一次发布。Async/await 和生成器非常受欢迎。可共享的服务器 socket 和更好的隔离性更是锦上添花。”

公告仅过了一天,谷歌就推出了 Dart 1.9 版本,它将主要专注于由 Dart 编译成 JavaScript 的努力,并决定不再把 Dart VM 集成进 Chrome 浏览器中了。

查看英文原文 Dart Adds Support for Asynchronous Programming

2015-03-31 05:362467

评论

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

记一次 TiDB v7.1 版本生产环境的完整搭建流程

TiDB 社区干货传送门

7.x 实践

抢先体验!星河社区ERNIE Bot SDK现已支持文心大模型4.0

飞桨PaddlePaddle

开发工具 文心大模型 星河社区

支持信创的数据安全运维平台哪个好?咨询电话多少?

行云管家

信创 数据安全 国产 数据安全运维

PCB表面镀金工艺,还有这么多讲究!

华秋电子

你不知道的浏览器Console玩法

Kevin_913

前端 控制台 调试工具

云起无垠典型案例入选《2023软件供应链安全洞察》报告

云起无垠

新品研发协同平台,助力快消企业新品上市成功!

赛博威科技

数字化转型 新产品 茅台 产品研发

git 拉取分支后不想合并了

图颜有信

WebSocket 原理详解:全方位解读

Apifox

程序员 最佳实践 websocket 协议 API

正式官宣|集成无界·RestCloud零代码集成自动化平台即将发布

谷云科技RestCloud

数字孪生智慧钢厂 Web3D 可视化管理平台

2D3D前端可视化开发

5G 物联网 可视化 数字孪生 智慧钢厂

通过NGINX搭建TiDB负载均衡

TiDB 社区干货传送门

安装 & 部署

玩转视图变量,轻松实现动态可视化数据分析

观测云

数据分析 可观测性 数据可视化

HAProxy安装及搭建tidb数据库负载均衡服务实战

TiDB 社区干货传送门

7.x 实践

数据安全法里面的数据是指什么?具体条例内容是什么?

行云管家

数据安全 数据安全法 数据运维 数据安全运维

软件测试|一文带你了解Flask框架

霍格沃兹测试开发学社

软件测试|一文教你flask路由配置

霍格沃兹测试开发学社

Hutool中那些常用的工具类和实用方法 | 京东云技术团队

京东科技开发者

hutool java工具类 企业号10月PK榜

便携式ECG方案介绍

华秋电子

基础软件是世界的事业 | 论数据库开源的力量

TiDB 社区干货传送门

Dapp钱包智能合约链上质押模式系统开发

l8l259l3365

CSS色域、色彩空间、CSS Color 4新标准 | 京东云技术团队

京东科技开发者

CSS 前端 浏览器 企业号10月PK榜

软件测试|教你轻松解决pip安装下载超时问题

霍格沃兹测试开发学社

TiDB实践安装及性能测试(上)

TiDB 社区干货传送门

安装 & 部署 性能测评 6.x 实践

TiDB实践安装及性能测试(下)

TiDB 社区干货传送门

迁移 管理与运维 备份 & 恢复 6.x 实践

mac电脑版多协议远程管理软件:Termius激活中文版

胖墩儿不胖y

SSH SSH工具 Mac软件 ssh客户端

Dart增强了异步编程_JavaScript_James Chesters_InfoQ精选文章