Кажется, вы немного запутались с JavaScript взаимодействием. Вы можете взглянуть на Cheatsheet в разделе JavaScript Interop
.
Вот несколько быстрых примеров:
JS CLJS
object.method(arg1, arg2) <=> (.method object arg1 arg2)
object.field <=> (.-field object)
object.field = "foo" <=> (set! (.-field object) "foo")
object.nested.field <=> (.-field (.-nested object))
Чтобы улучшить читабельность, вы можете использовать ->
макрос макросов :
object.nested.field <=> (-> object .-nested .-field)
Затем вы можете переписать свой пример следующим образом:
(-> (.createToken stripe card)
(.then (fn [result]
(if-let [error (.-error result)]
(-> (.getElementById js/document "card-errors")
(.-textContent)
(set! (.-message error)))
(js/stripeTokenHandler (.-token result)))))
;; if there is a `catch` branch
(.catch (fn […] …)))