Back

alt! (clj)

(source)

variable

Examples

kennytilton/matrix
(ns example.pipeline-test
  #?(:cljs (:require-macros
             [cljs.core.async.macros :as m :refer [go alt!]]))
  (:require
    #?(:clj [clojure.test :refer :all]
       :cljs [cljs.test :as test :refer-macros [deftest is run-tests async testing]])

    #?(:clj [clojure.core.async
             :refer [put! timeout go chan alt! alt!! <!! <! >! >!!]]
       :cljs [cljs.core.async
              :refer [buffer dropping-buffer sliding-buffer put! take!
                      chan promise-chan close! take partition-by offer!
                      poll! <! >! alts!] :as async])))

      (go
        (loop []
          (let [tout (timeout 1000)
                result (alt!
                         tout :timeout
                         pipe-out
                         ([r] r))]
            (pln :drvr-bam-out result)
            (when (not= result :timeout)
              (recur)))))

      (loop []
        (let [tout (timeout 1000)
              result (alt!!
                       tout :timeout
                       pipe-out
                       ([r] r))]
          (pln :drvr-bam-out result)
          (when (not= result :timeout)
            (recur))))
kennytilton/matrix
(ns example.mxpipe-test
  #?(:cljs (:require-macros
             [cljs.core.async.macros :as m :refer [go alt!]]))
  (:require
    #?(:clj [clojure.test :refer :all]
       :cljs [cljs.test :as test
              :refer-macros [deftest is run-tests async testing]])

    #?(:clj
            [clojure.core.async
             :refer [put! timeout go chan alt! alt!! <!! <! >! >!!]]
       :cljs [cljs.core.async
              :refer [buffer dropping-buffer sliding-buffer put! take!
                      chan promise-chan close! take partition-by offer!
                      poll! <! >! alts!] :as async])))

      (let [psn (last (pipe-segs pipe))]
        (go
          (loop []
            (when (pseg)))))
      (go
        (loop []
          ))
      (loop [n 2]
        (pln :looping!!! n)
        (when (pos? n)
          (let [tout (timeout 10)
                result (alt!!
                         tout :timeout
                         pipe-out
                         ([r] r))]
            (pln :drvr-bam-out result)
            (if (= result :timeout)
              (reset! running false)
              (recur (dec n))))))