下面的函数做了两件事——
- 检查 atom 是否为 nil 或 fetch-agin 是否为真,然后获取数据。
- 它通过调用 (add-date-strings) 来处理数据。
分离上述两个问题的更好模式是什么?
(def retrieved-data (atom nil))
(defn fetch-it!
[fetch-again?]
(if (or fetch-again?
(nil? @retrieved-data))
(->> (exec-services)
(map #(add-date-strings (:time %)))
(reset! retrieved-data))
@retrieved-data))