0

我有一段代码如下 -

        (future
          (
            (comp
             (fn [data]
               (service/parse srv data))
             (fn []
               (service/fetch srv))
            )))

基本上有两个函数fetchparse我以后必须调用它们。的结果fetchparse函数使用。不知何故,上面的内容似乎很冗长,因为我必须创建匿名函数以便我可以comp使用它们,然后使用额外的 () 来执行 comped 函数。

有没有更好的方法来实现上述目标?

4

2 回答 2

2

我假设srv在 Var 中定义了一些 url 或其他对象?从您的代码中不清楚。无论如何,等价的:

(future
  (let [data (service/fetch srv)]
    (service/parse srv data)))

或者干脆

(future
  (service/parse srv (service/fetch srv)))

我希望您可以重构parse,因此它不依赖于srv,但我没有足够的信息来确定您的问题。

于 2013-03-03T13:11:27.933 回答
2
(future
    (->> (service/fetch srv)
         (service/parse srv)))
于 2013-03-03T16:03:33.353 回答