Comments (2)
It there different way to do that.
Your register function should be something similar to:
(defn register-user
[params]
(p/promise
(fn [resolve reject]
(http/post url {:params params
:handler resolve
:error-handler reject}))))
Then, you can use it in different ways, depending on when you want handle the error case.
This one uses the default promise chaining functions:
(-> (register-user {:username "foo"
:password "bar"})
(p/then #(.log js/console "Success:" %))
(p/catch #(.error js/console "Error:" %)))
Also, you can use let instead of thread macro:
(let [result (register-user {:username "foo"
:password "bar"})]
(p/then result #(.log js/console "Success:" %))
(p/catch result #(.error js/console "Error:" %)))
Or inclusive you can use the monadic binding using cats:
(require '[cats.core :as m])
(m/mlet [result (register-user {:username "foo"
:password "bar"})]
;; The mlet body will be executed only if the
;; result will successfully resolved.
(.log js/console "Success " result))
from promesa.
Thanks! Very clear examples, makes complete sense.
from promesa.
Related Issues (20)
- promesa.core/then' is deprecated HOT 5
- typo of doc/channels.md HOT 1
- `(mapcat identity)` cannot be used as a `xf` with Promesa channels HOT 2
- cljdoc broken HOT 1
- `promise-buffer` in `promesa.exec.csp.buffers`? HOT 4
- Example in README fails in ClojureScript HOT 1
- Some possible documentation clarification HOT 2
- Deeper logging available?
- `(p/all [nil])` fails to run in ClojureScript HOT 10
- Attaching p/catch after p/finally is ineffective HOT 1
- A p/do in a p/catch of another p/do renders implicit exception handling ineffective
- lint for go-loop macro
- Using `offer!` with a buffered channel returns `false`
- Sequential computation macro
- Breaking change between V10 & V11, incompatibility with google API (gapi) Promises
- Support for AsyncIterator
- Promesa should not provide print-method impl for CompletionStage HOT 1
- Performance regression in past year with new `promise?` implementation
- implement merge for channels
- metadata is not forwarded to bound symbols in `p/let`
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from promesa.