pmap
(require '[clojure.core.async :as a])
(defn async-pmap [f coll]
(->> coll
(map (fn [v] (f v)))
(a/map vector)))
(a/go (println (a/<! (async-pmap #(a/go (a/<! (a/timeout (rand-int 4000))) (println %) %) (range 10)))))
This will println 0-9 and then print a vector of [0..9]