我意识到 Clojure 特意选择了没有延续。
我目前正在玩 ClojureScript。
我注意到在 JavaScript 的 AJAX 调用协议中,我经常传递一个函数来处理“AJAX 调用返回后要做什么”。
这听起来很像一个延续。
是否有一些标准方法可以在 ClojureScript 中设置 CPS?
如果不是,那么处理 AJAX 回调的正确方法是什么?
谢谢!
我意识到 Clojure 特意选择了没有延续。
我目前正在玩 ClojureScript。
我注意到在 JavaScript 的 AJAX 调用协议中,我经常传递一个函数来处理“AJAX 调用返回后要做什么”。
这听起来很像一个延续。
是否有一些标准方法可以在 ClojureScript 中设置 CPS?
如果不是,那么处理 AJAX 回调的正确方法是什么?
谢谢!
与 Scheme 不同, Clojure(和 ClojureScript)缺少一流的 continuation,但没有什么能阻止您以显式的 continuation-passing-style 编写代码。你是对的,一个接受函数回调的 JavaScript AJAX 调用是类似的。
查看关于 SO for AJAX 和 ClojureScript的另一个问题,它指出了如何使用 Google Closure 库,并且可能是最容易从“开箱即用”开始的问题。
您可能想查看 Clojure 的 Ganelon 微框架(我是它的作者)。
那里没有 CPS,但一般的想法 - 服务器端 AJAX 回调可以更新客户端内容或执行客户端 JavaScript 非常类似于 Common Lisp 的延续式 Web 框架 - Weblocks。
Ganelon 的演示和文档可在http://ganelon.tomeklipski.com/获得