Skip to content

Instantly share code, notes, and snippets.

@gphilipp
Last active December 6, 2016 19:35
Show Gist options
  • Select an option

  • Save gphilipp/df771cf817958117747c7a9a1309c6a7 to your computer and use it in GitHub Desktop.

Select an option

Save gphilipp/df771cf817958117747c7a9a1309c6a7 to your computer and use it in GitHub Desktop.
async issue
(reg-event-fx
:firebase/listen
(fn [{:keys [db] :as cofx} event]
(let [user (:user db)
firebase-database (:firebase-database db)]
; fetch user (core.async version)
(take! (-> firebase-database
(.ref)
(m/get-in [:user user])
(ma/deref<))
#(println "took:" %))
; fetch user (sync version)
(let [promise (-> firebase-database
(.ref)
(m/get-in [:user user])
(m/deref #(println %)))]
(.then promise
#(println "success:" %)
#(println "failed:" %)))
; if users exists...
; TODO
;then setup listening to both all users updates + user updates
(println "Listen to firebase update for user:" user "db=" db "cofx=" cofx)
(let [
allusers-unsubscribe-fn (listen-firebase firebase-database :firebase-allusers-updated)
user-unsubscribe-fn (listen-firebase firebase-database :firebase-user-updated user)]
{:db (assoc db :firebase-unsubscribe-allusers-fn allusers-unsubscribe-fn
:firebase-unsubscribe-user-fn user-unsubscribe-fn)
:dispatch [:firebase/listen-successful]}))))
(take! (-> firebase-database
(.ref)
(m/get-in [:user user])
(ma/deref<))
#(println "took:" %))
took: {:friends true, :personal-data {:salary 1700, :salary-basis year, :salary-payment-rate 13}}
=> nil
(let [promise (-> firebase-database
(.ref)
(m/get-in [:user user])
(m/deref #(println %)))]
(.then promise
#(println "success:" %)
#(println "failed:" %)))
{:friends true, :personal-data {:salary 1700, :salary-basis year, :salary-payment-rate 13}}
=> #object[Promise [object Object]]
success: #object[V [object Object]]
@gphilipp
Copy link
Copy Markdown
Author

gphilipp commented Dec 6, 2016

Grosso modo j'aimerai que à la ligne 25 du premier fichier, je puis récupérer la valeur qui a été fetchée en asynchrone...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment