Итак, я вижу, что вы хотите вернуть одно значение, если все URL-адресов успешны, и вернуть другое, если один из них неуспешен. Это именно то, что делает and
.
Я определил вспомогательную функцию для отправки запроса
(defn http-request-succeeded [url params]
(let [request (http/post url params)]
(= "200" (:status request))))
И вы можете просто вызвать каждый из них в функции and
, как показано ниже:
(if (and (http-request-succeeded some-url-1 params-1)
(http-request-succeeded some-url-2 params-2))
{:success true}
{:success false})
Или используйте макрос для большего повторного использования / ясности:
(defmacro do-all-> [& requests]
`(if (every? identity ~requests)
{:success true}
{:success false}))
(do-all-> (http-request-succeeded some-url-1 params-1)
(http-request-succeeded some-url-2 params-2))