写点什么

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:362454

评论

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

郴州等保测评中心电话是多少?在哪里?

行云管家

等保 等级保护 等保测评机构 郴州

GreptimeDB v0.4 重大更新 — 新版引擎 Mito2 专为时序数据而生

Greptime 格睿科技

时序数据库 数据库· Greptime GreptimeDB

云原生网关可观测性综合实践

阿里巴巴云原生

阿里云 微服务 云原生 监控

如何构建安全的App网络通信?

ZA技术社区

数据安全 众安科技 众安保险 ZA技术社区

2023云栖大会即将开幕,速来免费预约!

阿里云CloudImagine

云计算 阿里云 云栖大会

和鲸 ModelWhale 与华为 OceanStor 2910 计算型存储完成兼容性测试

ModelWhale

华为 信创 数据存储 数据科学 数据科学平台

认证授权双保驾 身份管理的选择关键 ——华为云OneAccess应用身份管理服务 (第一篇 工具介绍)

云计算 软件开发 华为云 应用身份管理

智慧公厕:改善城市生活的小细节

光明源智慧厕所

通过零代码ETLCloud实现数据自动化同步

谷云科技RestCloud

数据同步 ETL

基于 ACK Fluid 的混合云优化数据访问(二):搭建弹性计算实例与第三方存储的桥梁

阿里巴巴云原生

阿里云 云原生 容器服务

Web3D数字孪生智慧搅拌站可视化物联网平台

2D3D前端可视化开发

物联网 可视化 数字孪生 智慧搅拌站 智慧拌和站

浏览器可直接访问 Dubbo、gRPC 后端微服务,Dubbo-js 首个alpha 版本来了!

阿里巴巴云原生

阿里云 云原生 dubbo

巧用指标平台DataIndex,五步法轻松实现指标管理

袋鼠云数栈

大数据 数据中台 指标 指标管理 指标建设

一图看懂CodeArts Inspector 三大特性,带你玩转漏洞管理服务一图看懂CodeArts Inspector 三大特性,带你玩转漏洞管理服务

华为云开发者联盟

云计算 后端 华为云 漏洞修复 华为云开发者联盟

等级保护分为几个等级?企业一般是几级?

行云管家

网络安全 信息安全 等保 等级保护

词云生成脚本

石君

Python 词云

《AI 大底座价值实现白皮书》开放下载,人工智能基础设施助力数字经济高质量发展

Baidu AICLOUD

大模型 基础设施建设 智算中心 AI 大底座

快速入门:使用 FastAPI APIRouter 构建强大的 API

Liam

Java Python 后端 FastApi APIRouter

中国企业出海记:跨文化管理须“换鞋走路”

出海的猹

管理 文化 企业出海

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