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

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

评论

发布
暂无评论

深入浅出:SPI机制在JDK与Spring Boot中的应用

华为云开发者联盟

后端 开发 华为云 华为云开发者联盟 企业号9月PK榜

飞书深诺AI系列--如何写出一个好的Prompt

飞书深诺技术团队

软件测试|Python基础之面向对象(三)

霍格沃兹测试开发学社

软件测试|MySQL安装最全教程

霍格沃兹测试开发学社

提高效率的神器!企业级SQL审核与开发工具

NineData

数据库 团队协作 企业 SQL开发 NineData

淘天集团联合爱橙科技开源大模型训练框架Megatron-LLaMA

阿里技术

大模型 AIGC

软件开发中的资料整理与归档,软件产品开发文档合集

金陵老街

项目管理 文档管理软件

软件测试|Python基础之数据库

霍格沃兹测试开发学社

AI和语音助手:智能助手的展露头角

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

测试

软件测试|Pycharm搜索替换功能

霍格沃兹测试开发学社

将你的接口数据一目了然,借助 Apifox 的可视化响应功能

Apifox

前端 后端 Apifox API 可视化响应

软件测试|Python基础之面向对象(四)

霍格沃兹测试开发学社

软件测试|Python内置模块使用(一)

霍格沃兹测试开发学社

软件测试|Pycharm版本控制与分支管理

霍格沃兹测试开发学社

软件测试|Python基础之包的使用和软件开发目录规范及常用内置模块

霍格沃兹测试开发学社

软件测试|Python内置模块使用(二)

霍格沃兹测试开发学社

Qt For OpenHarmony

OpenHarmony开发者

OpenHarmony

软件测试|Python基础之面向对象(二)

霍格沃兹测试开发学社

软件测试|Python基础之模块导入和使用

霍格沃兹测试开发学社

软件测试/测试开发丨利用ChatGPT自动生成测试用例思维导图

测试人

人工智能 软件测试 思维导图 测试开发 ChatGPT

软件测试|数据库的内连接,左连接,右链接分别是什么

霍格沃兹测试开发学社

软件测试|TCP三次握手四次挥手

霍格沃兹测试开发学社

通过UltraSync减轻主节点负担、提升业务系统性能,AntDB如何做到?

亚信AntDB数据库

AntDB 国产数据库 AntDB数据库

如何用华为云ModelArts平台玩转Llama2

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号9月PK榜

数据研发“新人”如何快速落地?

阿里技术

数据研发

LED显示屏租赁市场“价格”与“质量”的联系

Dylan

广告 LED显示屏 led显示屏厂家

软件测试|App自动化之Appium工作原理

霍格沃兹测试开发学社

单元测试|Unittest setup前置初始化和teardown后置操作

霍格沃兹测试开发学社

【案例教学】华为云API图引擎服务 GES的便捷性—AI帮助快速处理图片小助手

人工智能 云计算 华为云

阿里云PAI-灵骏大模型训练工具Pai-Megatron-Patch正式开源!

小偏执o

软件测试|Pycharm运行与调试

霍格沃兹测试开发学社

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