goog.dom.animationFrame 的递归调用

Recursive Call with goog.dom.animationFrame

我正在尝试使用 google 闭包 animationFrame 功能。 我想用它创建一个动画任务并递归调用创建的任务。

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

有人能给我指出正确的方向吗? 我觉得我在这里缺少一些基本的 clojure 知识。

您的代码在定义之前调用了动画任务函数。它类似于这个更简单的代码:

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

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

如果您在 REPL 中尝试这样做,您会看到 task 在未定义时被调用。

相反,:measure 下的值应该是一个函数,而 API 接受一个 JavaScript 对象。这类似于将上面的示例修改为:

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