作为Clojurescript的新手,在我看来,每个Clojurescript项目都会有一些代码片段,如下所示:
(extend-type js/NodeList
ISeqable
(-seq [array] (array-seq array 0)))
Run Code Online (Sandbox Code Playgroud)
为什么不是核心库的这一部分?
我有一些非常独立的任务,我已经使用期货分拆了.这些任务通过core.async/chan将某些事件传递回主应用程序,或者只是与数据库通信.
其中一些未来现在无声无息.我的日志中没有堆栈跟踪,或者在std {out,err}上没有堆栈跟踪.我已经尝试围绕期货所调用的fns中的代码
(try (do-stuff)
(catch Exception e
(log/error e))
Run Code Online (Sandbox Code Playgroud)
只是为了得到一些输出到我的日志,但是 - 令人惊讶! - 没有用.
我唯一的选择是启动另一个在循环中执行以下操作的线程吗?
(let [m (Thread/getAllStackTraces)]
(doseq [e (.entrySet m)]
(log/error (.toString (.getKey e)))
(doseq [s (.getValue e)]
(log/error " " (.toString s)))))
Run Code Online (Sandbox Code Playgroud)
这是否表明我根本不应该使用期货?我是否应该使用代理,即使不需要向这些代理发送任何消息?