3

我正在使用Lamina来实现函数式反应式编程 (FRP)。

作为初学者,我尝试编写一个非常简单的时钟,以了解库的基础知识。

根据 Lamina 0.5.0-rc4 API 文档,有 lamina.time API:http: //ideolalia.com/lamina/lamina.time.html#var-now

我想实现一个非常简单的时钟,其中:

  • 每秒的间隔作为 Observable 时间 Streaming Collection/List/Seq (我还不太明白其中的区别)(编辑:现在我知道它在 Lamina上称为Channels )

  • 现在作为 Observable Streaming 数据

  • Println Now on every second (subscribe or for-each Observable time Collection)

欢迎任何反馈。谢谢。

编辑:我退出了。

经过一番研究,我得出结论,编写 FRP 代码的最佳方式是带有 RxJs 的 ClojureScript(来自 MS 的 ReactiveExtention)。

在我的相关问题中查看 ClojureScript + RxJs + node.js 的示例代码: ClojureScript on node.js, code

4

3 回答 3

3

你可以试试Bacon.js,它是在作者抱怨其晦涩的 API 之后创建的 Rx.js 的继承者。Bacon.js 非常干净,可以与 jQuery、Backbone.js、AngularJS 甚至 Node.js 集成。基本上,您可以将任何类型的事件包装到 Bacon 的事件流中,并开始用它们做一些美妙的事情。

奖励:您甚至可以尝试yolk,它被描述为“围绕 bacon.js 的薄 Clojurescript 包装器”。

- 编辑:快速错字修复

于 2013-09-23T14:31:26.710 回答
1

我找到了一篇好文章: http ://adambard.com/blog/why-clojure-part-2-async-magic/

-LAMINA:高级异步处理

(ns example.helloperiodically
  (:require [lamina.core :as lamina]))

(def ch (lamina/periodically 1000 (fn [] "Hello World!")))

(def loop-forever (comp doall repeatedly))

(defn consumer []
   (loop-forever
     (fn [] (println @(lamina/read-channel ch)))))

(defn main []
  (-> (Thread. consumer) .start))
于 2013-07-04T01:07:55.840 回答
0

为什么不试试ProAct.js - 它同时实现了函数式和面向对象的方法。它有一个 node.js (proact.js) 包——它稳定且经过良好测试。

于 2014-10-30T20:19:59.720 回答