Hacker News 中文摘要

RSS订阅

ClojureScript 引入异步/等待功能 -- ClojureScript Gets Async/Await

文章摘要

ClojureScript 1.12.145版本发布,新增了对JavaScript异步函数的支持。通过在函数前添加^:async提示,编译器会将其转换为JavaScript的async函数,支持await语法。这一改进满足了用户调查中最期待的JavaScript互操作需求,减少了对额外依赖的需求。

文章总结

标题:ClojureScript 1.12.145 版本发布

发布日期:2026年5月7日

我们很高兴地宣布 ClojureScript 的新版本发布。现有用户请仔细阅读以下更新说明。

异步函数支持

随着 ClojureScript 开始支持 ECMAScript 2016 标准,我们能够谨慎地选择增强互操作性的新领域。从本版本开始,通过为函数添加 ^:async 提示标记,ClojureScript 编译器将生成 JavaScript 异步函数:

```clojure (refer-global :only '[Promise])

(defn ^:async foo [n] (let [x (await (Promise/resolve 10)) y (let [y (await (Promise/resolve 20))] (inc y)) ;; 非异步函数 f (fn [] 20)] (+ n x y (f)))) ```

该特性同样适用于测试场景:

clojure (deftest ^:async defn-test (try (let [v (await (foo 10))] (is (= 61 v))) (let [v (await (apply foo [10]))] (is (= 61 v))) (catch :default _ (is false))))

在最近的 Clojure 社区调查中,异步函数支持高居 JavaScript 互操作性改进需求榜首。这一增强功能消除了与现代浏览器 API 和流行类库交互时对额外依赖的需求。

完整修复列表和功能变更请参阅更新日志

致谢

特别感谢为 ClojureScript 1.12.145 做出贡献的社区成员: - Michiel Borkent

(注:原文中的技术细节和代码示例已完整保留,删减了重复的版本号说明和部分格式化标记,使内容更加紧凑易读。)

评论总结

总结评论内容:

  1. 对ClojureScript异步功能的历史认可
  • 指出ClojureScript通过core.async库早已实现异步范式(CSP风格) "fun fact: clojurescript had support for asynchronous paradigm through core.async library" "Clojure already had a nicer pattern for this"
  1. 对发布的重要性和实用性评价
  • 认为这是重要的JavaScript互操作改进,无需额外库 "This is important for JavaScript interop without having to include additional libraries" "Congratulations on the release :-)"
  1. 对ClojureScript采用度的讨论
  • 表达希望前端替代方案能更普及的愿望 "I wish an alternative to JS for the front end would catch on" "Maybe this is easier to adopt if you're already a clojure shop"
  1. 对技术发展的观察
  • 注意到Clojure/ClojureScript最近突然受到更多关注 "Surprised to see Clojure/ClojureScript come up on socials more often" "are we in for a sexp resurgence?"
  1. 其他技术比较
  • 提到CoffeeScript早已支持async/await "But it already supports async/await :)" "I remember a decade ago when JavaScript got Async/Await"
  1. 对生态系统的建议
  • 建议移除Google Closure Compiler依赖 "Now also get rid of the elephant in the room - 'Google Closure Compiler'"