Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asynchronous Clojure订阅changefeed_Asynchronous_Clojure_Rethinkdb - Fatal编程技术网

Asynchronous Clojure订阅changefeed

Asynchronous Clojure订阅changefeed,asynchronous,clojure,rethinkdb,Asynchronous,Clojure,Rethinkdb,我在用电脑。 我想从查询中获取更改提要。以下是我到目前为止的情况: (defn change-feed [conn] (loop [changes (future (-> (r/db "mydb") (r/table "mytable") r/changes (r/run conn)))] (printl

我在用电脑。 我想从查询中获取更改提要。以下是我到目前为止的情况:

(defn change-feed [conn]
  (loop [changes (future
                   (-> (r/db "mydb")
                       (r/table "mytable")
                       r/changes
                       (r/run conn)))]
    (println "date : " ((comp :name :newval) first @changes)) ;;prints nil
    (recur (rest changes))))
调用时它会阻塞我的REPL(这是正常的)。然后,我使用REJECTDB接口添加数据。它打印
nil
,我得到以下错误:

IllegalArgumentException Don't know how to create ISeq from: clojure.core$future_call$reify__6736  clojure.lang.RT.seqFrom (RT.java:528)
我做错了什么?我希望能够:

  • 从这个未来获取项目
  • 还要知道我一次可以带多少物品(如果有几件正在等待)

注意:我计划最终使用操作结果,因此使用它的任何解决方案都是完全正确的。

我认为您不需要在那里使用future块,clj数据库库返回的光标将一直阻塞,直到它准备好为止

您还可以使用
doseq
而不是更自然的循环


我是clj数据库的维护人员,我们已经进行了一些更改,以提供一个core.async接口和一个新的游标抽象。如果您想早点使用,请结账

谢谢,我会看一看。也谢谢你做这个。请注意,我也很乐意使用core.async接口。不,如果光标阻塞,您如何在REPL中进行测试?您可以打开第二个REPL?我想我可以。。。急切地等待你的PR被合并:)PS:在你的回答中,你的意思是“不需要”对吗?