Promesa
A promise library & concurrency toolkit for Clojure and ClojureScript.
A promise library & concurrency toolkit for Clojure and ClojureScript. The project is written primarily in Clojure, distributed under the Mozilla Public License 2.0 license, first published in 2015. Key topics include: async-await, asynchronous-programming, clojure, clojurescript, completablefuture.
promesa
A promise library & concurrency toolkit for Clojure and ClojureScript.
This library exposes a bunch of useful syntactic abstractions that
considerably simplify working with promises (in a very similar
way as you will do it in JS with async/await) and many helpers from
executors to concurrency patterns (bulkhead & CSP). With 0 runtime
external dependencies.
Here you can look a detailed documentation.
Getting Started
deps.edn:
clojurefuncool/promesa {:mvn/version "12.0.0"}
You also can get it via git:
clojurefuncool/promesa {:git/sha "1f94377" :git/tag "12.0.0" :git/url "https://github.com/funcool/promesa"}
On the REPL
clojure(require '[promesa.core :as p]) (->> (p/promise 1) (p/map inc) (deref) ;; => 2
NOTE: example only work on JVM because the evident lack of blocking
primitives on JS runtime.
Contributing
If you miss something, feel free to open an issue for a discussion. If
there is a clear use case for the proposed enhancement, the PR will be
more than welcome.
Testing
Run the Clojure (.clj) tests:
shellclojure -M:dev -m promesa.tests.main
Run the ClojureScript (.cljs) tests:
shellcorepack enable corepack install yarn install yarn run test
Run the Babashka tests:
shellbb test:bb
Contributors
Showing top 12 contributors by commit count.
