使用goog.dom.animationFrame进行递归调用

时间:2018-07-25 19:08:11

标签: clojurescript google-closure-library

我正在尝试使用Google闭包animationFrame功能。 我想用它创建一个动画任务,然后递归调用该创建的任务。

我定义了一个名为animationTask的def。 当我尝试在该任务中递归使用def时,它将失败。它注销了animationTask未定义,因此不能用作函数。

enter image description here

有人可以指出我的正确方向吗? 我觉得这里缺少一些基本的Clojure知识。

1 个答案:

答案 0 :(得分:1)

您的代码在定义动画任务功能之前就对其进行了调用。类似于下面的简单代码:

(defn create [x] (fn []))

(def task (create {:measure (task)}))

如果您在REPL中尝试该操作,则会看到task仍在未定义的状态下被调用。

相反,:measure下的值应该是一个函数,并且API带有JavaScript对象。这类似于将以上示例修改为:

(def task (create #js {:measure (fn [state] (task))}))