2024 Clojure 状态调查! 中分享您的想法。

欢迎!请访问 关于 页面获取更多关于如何使用本站的信息。

0 投票
core.async

如果在“finally”块中存在“if”语句,并且包含“finally”的“try”位于 CLJS 的“go”块中,那么“try”的结果始终为 nil。

示例代码

(ns demo
(:require-macros
(link: cljs.core.async.macros :refer [go)]))

;; 输出: "in a try"
(println (try "in a try" (finally (if true nil ))))

;; 输出: "in a try"
(go (println (try "in a try" (finally nil))))

;; 输出: nil
(go (println (try "in a try" (finally (if true nil )))))

3 个回答

0 投票

评论由:hubert 提供

同样会失败
org.clojure/clojure "1.8.0"
org.clojure/clojurescript "1.9.671"
org.clojure/core.async "0.3.443"

0 投票

评论由:hiredman 提供

这很可能是由于 go 块中 try/catch 处理中的错误导致的,该错误应该通过 https://dev.clojure.org/jira/browse/ASYNC-184 来修复。

0 投票
参考: https://clojure.atlassian.net/browse/ASYNC-199 (由 alex+import 提出)
...