(评论)
(comments)
原始链接: https://news.ycombinator.com/item?id=44012227
Hacker News正在讨论JavaScript的一个新的显式资源管理提案,重点是`using`关键字和`Symbol.dispose`/`Symbol.asyncDispose`。一些评论者批评了“函数颜色”问题(同步与异步),这与Java的虚拟线程争论如出一辙。另一些人认为显式异步处理有助于代码推理,尤其是在容易出错的情况下。
该提案与C#的`using`、Python的上下文管理器和Java的try-with-resources类似,旨在通过词法作用域实现确定的资源清理。然而,人们担心可能会被误用,例如忘记`using`关键字或忽略定义`dispose`方法。JavaScript缺乏类型加剧了这些担忧,这与C#不同。使用Symbol是为了避免命名冲突。
尽管存在这些担忧,许多人仍然欢迎这项功能,因为它有可能编写更简洁的代码并更好地管理资源,尤其是在WASM和后端Node.js开发中。社区预计会有代码风格检查规则来减轻潜在的陷阱。目前,其实际效用似乎有限,因为许多JS API已经自动关闭资源。
I am so glad that Java decided to go down the path of virtual threads (JEP 444, JDK 21, Sep 2023). They decided to put some complexity into the JVM in order to spare application developers, library writers, and human debuggers from even more complexity.
reply