RxClojure - rx / return和rx / observable *之间的区别是什么?

时间:2016-01-04 13:35:50

标签: clojure reactive-programming rx-java

我正在阅读这本书Clojure Reactive Programming(这是很棒的BTW),但是我无法理解这两个代码示例之间的区别,这些示例创建了一个简单的Observables:

(ns rx-playground.core
    (:require [rx.lang.clojure.core :as rx]) 
    (:import [rx Observable]))

;; Sample 1
(defn simple-obs-one [n] (rx/return n))

;; Sample 2
(defn simple-obs-two [n]
    (rx/observable*
        (fn [observer]
        (rx/on-next observer n)
        (rx/on-completed observer))))

我唯一注意到的是第一个示例返回一个类型为

的对象
rx.internal.util.ScalarSynchronousObservable

当第二段代码返回一个类型为

的对象时
rx.Observable

提前感谢任何能够解释这个问题的人。

1 个答案:

答案 0 :(得分:2)

两种情况都返回一个Observable,对于这个特定的例子,它们都做同样的事情:发出一个值。

simple-obs-two是一个示例,如果rx库中没有内置的rx / return,你将如何构建rx / return。