我正在尝试使用Google闭包animationFrame功能。 我想用它创建一个动画任务,然后递归调用该创建的任务。
我定义了一个名为animationTask的def。 当我尝试在该任务中递归使用def时,它将失败。它注销了animationTask未定义,因此不能用作函数。
有人可以指出我的正确方向吗? 我觉得这里缺少一些基本的Clojure知识。
答案 0 :(得分:1)
您的代码在定义动画任务功能之前就对其进行了调用。类似于下面的简单代码:
(defn create [x] (fn []))
(def task (create {:measure (task)}))
如果您在REPL中尝试该操作,则会看到task
仍在未定义的状态下被调用。
相反,:measure
下的值应该是一个函数,并且API带有JavaScript对象。这类似于将以上示例修改为:
(def task (create #js {:measure (fn [state] (task))}))