ClojureScript 迎来 Async/Await

Hacker News Top 工具

摘要

ClojureScript 1.12.145 通过 ^:async 提示引入原生异步函数支持,实现与 JavaScript async/await 的直接互操作,无需额外依赖。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/05/08 10:41

# ClojureScript - 1.12.145 版本发布 来源:https://clojurescript.org/news/2026-05-07-release *2026年5月7日* *ClojureScript团队* 我们很高兴地宣布 ClojureScript 的新版本发布。如果您是 ClojureScript 的现有用户,请仔细阅读以下发布说明。 ## https://clojurescript.org/news/2026-05-07-release#_async_functions 异步函数 既然 ClojureScript 现在面向 ECMAScript 2016(https://clojurescript.org/news/2025-11-24),我们可以谨慎地选择新的互操作增强方向。从这一版本开始,为函数添加 `^:async` 提示将使 ClojureScript 编译器生成 JavaScript 异步函数(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function): `` (refer-global :only '[Promise]) (defn ^:async foo [n] (let [x (await (Promise/resolve 10)) y (let [y (await (Promise/resolve 20))] (inc y)) ;; not async f (fn [] 20)] (+ n x y (f)))) `` 这也适用于测试: `` (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 互操作方面最受 ClojureScript 社区期待。这一增强消除了在与现代浏览器 API 和流行库进行常见交互时引入额外依赖的必要性。 完整的修复、更改和增强列表请参见此处(https://github.com/clojure/clojurescript/blob/master/changes.md#1.12.145) ## https://clojurescript.org/news/2026-05-07-release#_contributors 贡献者 感谢所有为 ClojureScript 1.12.145 做出贡献的社区成员: - Michiel Borkent

相似文章

Lua-async

Lobsters Hottest

Lua-async 是一个为 Lua 语言增加异步编程功能的新库,在一个技术新闻平台上共享。

Async/Await 的设计空间探索

Lobsters Hottest

本文介绍了编程语言中直线异步性的设计空间探索,审视了不同语言中async/await实现的差异及其语义后果。

Clojure 速度几乎媲美 C(需借助一些优化)

Lobsters Hottest

本文详细介绍了 Clojure 如何借助 JVM 的 Vector API 和精心优化,在 3D 压力测试中达到接近 C 的帧率(仅差 20%),展示了动态语言在热循环中也能接近底层性能。