Back
p->c (clj)
(source)function
(p->c p)
EXPERIMENTAL: Puts the promise resolution into a promise-chan and returns it.
The value of a rejected promise will be wrapped in a instance of
ExceptionInfo, acessible via ex-cause.
Examples
clojure/core.async
(ns cljs.core.async.interop-tests
(:require-macros [cljs.core.async.macros :refer [go]])
(:require [cljs.core.async :refer [<!]]
[cljs.core.async.interop :refer [p->c] :refer-macros [<p!]]
[cljs.test :refer-macros [deftest is async]]))
(deftest interop-p->c-semantics
(async done
(go
(let [c (p->c (js/Promise.resolve 42))]
(is (= (<! c) 42))
(is (= (<! c) 42))
(done)))))
lambda-toolshed/papillon
(ns lambda-toolshed.papillon.async
#?(:cljs
(:require [clojure.core.async :as core.async]
[clojure.core.async.impl.protocols :refer [ReadPort]]
[cljs.core.async.interop :as core.async.interop :refer [p->c]])))
#?(:cljs
(do
(extend-type js/Promise
ReadPort
(take! [this handler]
(->
this
p->c
(#(core.async/take 1 %))
(clojure.core.async.impl.protocols/take! handler))))))