假设我有一个组件需要在渲染之前从服务器请求一些数据。
我现在拥有的类似于cljs-ajax
图书馆:
(def data (r/atom nil))
(defn component [id]
(r/create-class {:reagent-render simple-div
:component-did-mount (partial get-data id)}))
(defn get-data [id]
(GET (str "/api/" id)
{:handler init}))
(defn init [response]
(let [data1 (:body response)
data2 (compute data1)
data3 (compute2 data2)]
(reset! data (compute3 data1))
(.setup @data data1)
(.setup2 @data data2)
(.setup3 @data data3))
setup
函数是一些有副作用的国外JS库函数 。
这行得通,但我觉得这不是进行回调的正确方法。更不用说我是否需要GET
基于我获得的第一个数据的其他数据,然后基于此的其他数据,这将是一个非常讨厌的回调链。
在试剂/clojurescript 中执行这种 ajax 请求是否有更好、更干净的方法?