我正在做我的第一个ClojureScript项目,但找不到Clojure常用的core.async
函数/宏;例如thread
,<!!
。 (我也在github中检查了源代码,但是它们在cljs源代码中不存在)
是否有一些参考资料可以用来找出Clojure和ClojureScript中core.async
的用法之间的区别?
此外,如何在cljs的看来cljs的内核中没有任何阻塞操作。异步chan
块之外的go
处执行阻塞获取操作?
还是只是为不返回任何值的函数启动一个单独的线程?
Google似乎并没有在cljs中提供有关core.async
的很多信息
任何帮助或指点将不胜感激!
答案 0 :(得分:0)
core.async是一个单独的库。使您的project.clj
如下所示:
(defproject flintstones "0.1.0-SNAPSHOT"
:min-lein-version "2.7.1"
:dependencies [[org.clojure/clojure "1.9.0"]
[org.clojure/clojurescript "1.10.238"]
[org.clojure/core.async "0.4.474"]]
...
,您的CLJS命名空间应定义如下内容:
(ns tst.flintstones.dino
(:require
[cljs.test :refer-macros [deftest is async use-fixtures]]
[cljs.core.async :as async]
[dinoPhony] ))
和类似的代码:
(let [ch (async/chan)]
(async/go (async/>! ch 42))
(println "dino: async result:" (async/go (async/<! ch)))
请see this template project作为工作示例。