写点什么

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

评论

发布
暂无评论

价值:我对工作的思考

老张

价值 职场经验

LED显示屏由哪些部件组成

Dylan

系统 LED显示屏 屏幕 电源

用友BIP,助力轴承行业数智化转型

用友BIP

数智化转型

从 Oracle 迁移到 TiDB 的方案设计与用户实践

TiDB 社区干货传送门

实践案例

多维详述MediaBox互动直播AUI Kit低代码开发方案

阿里云CloudImagine

云计算 视频云

使用Python调用API接口获取拼多多商品数据:一篇详细说明文章

Noah

分享一套适合二开的JAVA开源版本MES系统

万界星空科技

生产管理系统 云mes 免费mes 开源mes mes源码

推送效率低?MobPush带着APP消息推送一站式解决方案来了

MobTech袤博科技

大数据

iPulse 激活版for mac(系统状态监控软件) v3.141

胖墩儿不胖y

Mac软件 系统监控软件

TiDB快速部署工具

TiDB 社区干货传送门

实践案例 集群管理 管理与运维 安装 & 部署

TiDB in SaaS丨TiDB 在 Moka BI 场景下的应用

TiDB 社区干货传送门

实践案例

同盾科技 x TiDB丨实时数据架构为风控智能决策保驾护航

TiDB 社区干货传送门

实践案例

AI引领搜索智投新时代 | 百度营销推出“AI投放项目”

极客天地

培养财务团队协作,冲破市场经济逆境

智达方通

财务分析 业财融合 智达方通 财务团队协作

如何构建新一代实时湖仓?袋鼠云基于数据湖的探索升级之路

袋鼠云数栈

数据仓库 数据湖 湖仓一体 大数据仓库 实时湖仓

武创院区块链产业研究所:基于鲲鹏DevKit开发区块链政务服务协同数据治理平台,数据管理更放心

彭飞

Amazon Bedrock 划算吗?Bedrock 大模型服务定价与分析

魏临

CCIA数安委等组织发布PIA星级标识名单,合合信息再次通过数据安全领域权威评估

合合技术团队

人工智能 合合信息 个人信息保护 PIA

高级加密货币交易所软件演变:2024 年主要趋势和策略

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 NFT开发 公链开发

盈利能力管理,为企业未来发展创造优势

智达方通

全面预算 盈利能力

万界星空科技生产管理MES系统的数据追溯技术

万界星空科技

mes 云mes 追溯系统 产品追溯 万界星空科技mes

双十一剁手节,MobPush助力各大电商平台提前锁定潜力用户

MobTech袤博科技

大数据

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