Ich bin neu bei 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?
Hier ist ein Überblick über das, was ich mache:
%Vor%Hier ist der eigentliche Code, den ich verwende: Ссылка
Es funktioniert, aber ich hatte eine harte Zeit zu überprüfen, ob es der richtige Weg ist, dies zu tun.
core.async
ist mächtig, aber es scheint wirklich, wenn es darum geht, komplexere Asynchronität zu koordinieren. Wenn Sie die Antwort immer blockieren möchten, empfehle ich stattdessen, stattdessen promise
zu verwenden, da es ein wenig ist einfacher:
Wenn Sie mit Kanälen arbeiten möchten, kann der Code ein bisschen aufgeräumt werden. Wichtig ist, dass Sie nicht alles in einen go
-Block einbinden müssen; go
ist erstaunlich für die Koordinierung der Asynchronität, aber letztlich ist der Kanal eines Kanals:
Tags und Links clojure core.async http-kit