2012-07-03 7 views
2

Я понимаю, что Clojure специально решил не иметь продолжений.ClojureScript, JavaScript, AJAX Calls, Continuation Passing Style

В настоящее время я играю с ClojureScript.

Я заметил, что в JavaScript-вызове JavaScript AJAX я часто передаю функцию для обработки «что делать после вызова AJAX».

Это звучит как продолжение.

Есть ли стандартный способ установки CPS в ClojureScript?

Если нет, то каков правильный способ обработки обратных вызовов AJAX?

Спасибо!

ответ

1

Clojure (и ClojureScript) отсутствует first-class continuations, в отличие от Схемы, но нет ничего, что помешает вам писать код в явном продолжении-прохождении. Вы правы, JavaScript-вызов AJAX, который выполняет обратный вызов функции, аналогичен.

Откажитесь от this другого вопроса о SO для AJAX и ClojureScript, в котором указывается, как использовать библиотеку Google Closure, и, вероятно, проще всего начать с «готового».

0

Возможно, вы захотите проверить микрофрейм Ganelon для Clojure (который я автор).

Там нет CPS, но общая идея - эти обратные вызовы AJAX на стороне сервера могут обновлять содержимое на стороне клиента или выполнять клиентский JavaScript, вполне аналогичный веб-фреймворку продолжения для Common Lisp - Weblocks.

Demo & Документы для Ганелона доступны на http://ganelon.tomeklipski.com/