AICon 北京站 Keynote 亮点揭秘,想了解 Agent 智能体来就对了! 了解详情
写点什么

TC39 提出了九个 JavaScript 建议,包括 Array.fromAsync、Error.isError 和 using

  • 2025-06-24
    北京
  • 本文字数:1212 字

    阅读完需:约 4 分钟

大小:409.68K时长:02:19
TC39提出了九个JavaScript建议,包括Array.fromAsync、Error.isError和using

Ecma 技术委员会 39(TC39),负责 JavaScript(ECMAScript)发展的机构,最近在其阶段流程中推进了九个提案,其中有三个新的语言特性将成为标准的一部分:Array.fromAsync、Error.isError 和显式资源管理 using

 

Array.fromAsync 是一个从异步可迭代对象创建数组的实用工具。这简化了从异步生成器或流等数据源收集数据的过程,消除了手动使用 for await...of 循环的需要。

 

特性解释器提供了以下来自httptransfer模块的实际示例:

 

async function toArray(items) {  const result = [];  for await (const item of items) {    result.push(item);  }  return result;}

it('empty-pipeline', async () => { const pipeline = new Pipeline(); const result = await toArray( pipeline.execute( [ 1, 2, 3, 4, 5 ])); assert.deepStrictEqual( result, [ 1, 2, 3, 4, 5 ], );});
复制代码

 

使用新语法,这变为:

 

it('empty-pipeline', async () => {  const pipeline = new Pipeline();  const result = await Array.fromAsync(    pipeline.execute(      [ 1, 2, 3, 4, 5 ]));  assert.deepStrictEqual(    result,    [ 1, 2, 3, 4, 5 ],  );});
复制代码

 

Error.isError() 方法也推进到第 4 阶段,提供了一种可靠的方法来检查一个值是否是错误实例。替代方案 instanceof Error 被认为是不可靠的,因为它会在跨域(例如,来自 iframe 或 node 的 vm 模块)错误实例中提供Error的否定结果。

 

另一个达到第 4 阶段的提案是显式资源管理,引入了用于管理需要显式清理的资源(如文件或网络连接)的 using 声明。这个提案特别受到资源管理不一致模式的驱动:ECMAScript 迭代器的 iterator.return() 、WHATWG 流读取器的 reader.releaseLock() 、NodeJS 文件句柄的 handle.close() 等。

 

提案还缓解了几个潜在的问题。例如,在管理多个资源时:

 

const a = ...;const b = ...;try {  ...}finally {  a.close(); // 糟糕,如果`b.c close()`依赖于`a`,就会发生问题。  b.close(); // 糟糕,如果`a.c close()`抛出异常,`b`永远不会执行。}
复制代码

 

Import Attributes (原名 Import Assertions)推进到第 3 阶段。这个特性允许开发者向import声明添加元数据,提供关于模块预期类型的信息,如 JSON 或 CSS。

 

其他在不同阶段推进的提案包括 Promise.try ,旨在简化 promise 链中的错误处理, RegExp.escape 用于在正则表达式中安全转义字符串等。开发者可以在网上的博客文章中查看完整列表

 

TC39 是发展 JavaScript 的委员会。其成员包括所有主要的浏览器供应商等。每个 ECMAScript 特性的提案都会经历以下几个成熟的阶段

 

  • 第 0 阶段:初步构想

  • 第 1 阶段:提案

  • 第 2 阶段:草案

  • 第 3 阶段:候选

  • 第 4 阶段:完成

 

一旦一个特性的提案达到第 4 阶段,它将被包含在标准中,因此可以安全使用。然而,浏览器对特性的支持可能会落后于标准中特性的采用。

 

原文链接:

https://www.infoq.com/news/2025/06/tc39-stage-4-2025/

2025-06-24 17:002

评论

发布
暂无评论

从资源弹性到数据弹性,乾象如何将云上量化研究效率提升 40%?

阿里巴巴云原生

阿里云 云原生

ChatGPT 仅仅是一款工具而已 | 社区征文

小鑫同学

ChatGPT

车企数据分类分级的实践指南出炉!“数据安全推进计划”发布,奇点云参编

奇点云

数据安全 奇点云 数据分类分级 车企

云快充研发中心平台架构师谈云原生稳定性建设之路

阿里巴巴中间件

阿里云 容器 云原生

大国重器用友BIP,助力贸易行业数智化转型

用友BIP

数智化

软件测试 | 针对看起来很小的代码错误执行后续测试

测吧(北京)科技有限公司

测试

BI工具数据看板哪个好,瓴羊Quick BI整不错!

流量猫猫头

怎么预防LED显示屏静电

Dylan

设备 LED显示屏 全彩LED显示屏

Nacos+ThreadPoolExecutor构建动态线程池

小小怪下士

Java 程序员 线程池

基于人形检测的划区域客流统计

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 3 月 PK 榜 人形检测

搞定预设,让你的 ChatGPT 不受限制 | 社区征文

江户川码农

人工智能 聊天机器人 openai ChatGPT

60% 程序员大呼:我要远程办公!

引迈信息

敏捷开发 低代码 远程办公

Wasm 原生时代已经来到

SOFAStack

开源 互联网 Wasm

科技大势怎么看 2023怎么干?

加入高科技仿生人

人工智能 低代码 科技 数字孪生 6G

软件测试 | 使用冒烟测试检验版本

测吧(北京)科技有限公司

测试

全景剖析阿里云容器网络数据链路(六):ASM Istio

阿里巴巴中间件

阿里云 容器 云原生

Nydus 在约苗平台的容器镜像加速实践

SOFAStack

开源 互联网 开发

技术专家云集,OpenHarmony技术峰会分论坛聚焦内核及视窗创新

极客天地

阿里云函数计算助力高德RTA广告投放系统架构升级

阿里巴巴中间件

阿里云 云原生 函数计算

转型调研 | “鼎新汇•企业行”第一站:走进中国联通软件研究院

信通院IOMM数字化转型团队

数字化转型 IOMM 鼎新汇•企业行 鼎新杯

附安装包和快捷键!5个不能错过的 Blender 插件

Finovy Cloud

软件 blender 3ds Max云渲染

文档资料多?官方文档怎么找?openEuler文档地图帮你搞定

openEuler

Linux 操作系统 文档 openEuler

软件测试 | 不要把手工测试与自动化测试等同起来

测吧(北京)科技有限公司

测试

干货演讲!龙蜥自动化运维平台SysOM 2.0调度、内存相关诊断功能介绍 | 第 70-71 期

OpenAnolis小助手

内存 系统运维 sig 龙蜥大讲堂 SysOM

软件测试/测试开发 | 测试平台开发-前端开发之Vue.js 框架

测试人

软件测试 测试开发 测试平台

从青铜到王者,揭秘 Serverless 自动化函数最佳配置

阿里巴巴云原生

阿里云 Serverless 云原生

软件测试 | 质量控制

测吧(北京)科技有限公司

测试

软件测试 | 测试方法的基于活动的测试手段

测吧(北京)科技有限公司

测试

如何基于 Antmove 将小程序快速迁移至 FinClip 环境

FN0

小程序 支付宝小程序 finclip

博睿数据数智领航营全国巡讲火热预约中,扫码即可参与报名~ ​​​

博睿数据

智能运维 博睿数据 数智领航营

TC39提出了九个JavaScript建议,包括Array.fromAsync、Error.isError和using_软件工程_Bruno Couriol_InfoQ精选文章