async/await for Clojure
A lightweight Clojure wrapper around ForkJoinPool and CompletableFuture
for concurrency that is simple and easy.
core.async is very powerful, but quite low-level by design
[conquerant "0.1.3"]
;; Async HTTP Exaxmple
;; ===================
(refer-clojure :exclude '[await promise])
(require '[clj-http.client :as client]
'[conquerant.core :refer [async await promise]])
(def url "https://gist.githubusercontent.com/divs1210/2ce84f3707b785a76d225d23f18c4904/raw/2dedab13201a8a8a2c91c3800040c84b70fef2e2/data.edn")
(defn fetch [url]
(promise [resolve reject]
(client/get url
{:async? true}
#(resolve %)
#(reject %))))
(async
(let [response (await (fetch url))]
(println "Response Body:" (:body response))))
(println "fetching asynchronously...")
;; => fetching asynchronously...
;; => Response Body: {:result 1}
promise
CompletableFutureasync
defn and fn forms - supports variadic versions: (async (defn [a] (inc a)))CompletableFuture: @(async [1 2])conquerant.internals/*executor* is bound to the common ForkJoinPool pool by defaultawait
async let blocks
let block anywhere inside an async blockcore.asyncCopyright © 2018 Divyansh Prakash
Distributed under the Eclipse Public License either version 1.0.
Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |