2013-03-03 3 views
0

У меня есть кусок кода следующим образом -лучше идиома для следующего потока

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

В основном есть две функции fetch и parse, которые я должен позвонить в будущем. Результат fetch используется функцией parse. Как-то вышеизложенное представляется многословным, поскольку я должен создавать анонимные функции, чтобы я мог их comp, а затем использовать extra() для выполнения функции comped.

Любые лучшие способы достижения вышеуказанного?

ответ

2

Я предполагаю, что srv - это какой-то URL-адрес или другой объект, определенный в Var? Непонятно из вашего кода. Во всяком случае, эквивалент:

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

или просто

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

Я ожидаю, что вы можете реорганизовать parse поэтому не зависит от srv, но у меня нет достаточно информации о вашей проблеме, чтобы быть уверенным, ,

Смежные вопросы