这个问题在这里已有答案:
我正在研究我的第一个ClojureScript项目,我无法找到我在Clojure中习惯的core.async
函数/宏;像thread
,<!!
。 (我也检查了github中的源代码,它们不存在于cljs源代码中)
是否有一些参考资料可以用来找出Clojure和ClojureScript中core.async
的用法之间的差异?
另外,如何从cljs中的chan
块外的go
执行阻塞get操作?
看起来cljs在core.async中没有任何阻塞操作
或者只是为一个不会返回任何值的函数启动一个单独的线程?
谷歌似乎并没有在cljs中提供有关core.async
的大量信息
任何帮助或指针将不胜感激!
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作为一个实例。