Clojure和ClojureScript之间的core.async区别[重复]

问题描述 投票:1回答:1

这个问题在这里已有答案:

我正在研究我的第一个ClojureScript项目,我无法找到我在Clojure中习惯的core.async函数/宏;像thread<!!。 (我也检查了github中的源代码,它们不存在于cljs源代码中)

是否有一些参考资料可以用来找出Clojure和ClojureScript中core.async的用法之间的差异?

另外,如何从cljs中的chan块外的go执行阻塞get操作? 看起来cljs在core.async中没有任何阻塞操作

或者只是为一个不会返回任何值的函数启动一个单独的线程?

谷歌似乎并没有在cljs中提供有关core.async的大量信息

任何帮助或指针将不胜感激!

clojure clojurescript core.async
1个回答
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作为一个实例。

© www.soinside.com 2019 - 2024. All rights reserved.