Ich bin neu in Clojure und schreibe eine Bibliothek, die Post-Ergebnisse für eine Antwort an einen Server sendet. Ich nehme die Antwort auf, indem ich sie auf einen asynchronen Core-Kanal lege. Ist das gesund oder gibt es einen besseren Weg?Ist es sinnvoll, core.async-Kanäle zu verwenden, um die Post-Ergebnisse von http-kit in clojure zu konsumieren?
ist hier ein hohes Maß Überblick darüber, was ich tue:
(defn my-post-request [channel options]
(client/post http://www.example.com options
(fn [{:keys [status headers body error]}] ;; asynchronous handle response
(go (>! channel body)))))
(defn request-caller [options]
(let [channel (chan)]
(my-post-request channel options)
(json/parse-string (<!! (go (<! channel))))))
Hier ist der eigentliche Code, den ich verwende: https://github.com/gilmaso/btc-trading/blob/master/src/btc_trading/btc_china.clj#L63
Es funktioniert, aber ich habe eine harte Zeit hatte die Überprüfung, ob Das ist der richtige Weg.
Vielen Dank für die durchdachte Antwort! Ich entschied mich, mit Versprechen/Lieferung zu gehen. Ich hatte diese seltsame Idee, dass es meinen Hauptthread blockieren würde, aber ich lag falsch damit. Gedrückt! – gilmaso