2015-01-25 2 views
0

Учитывая канал в ClojureScriptНесколько слушателей/идут блоки для канала в ClojureScript

(def navigation (chan)) 

Можно ли иметь несколько идти блоки, которые тянут значения от него? Например.

(go 
(while true 
    (secretary/dispatch! (<! navigation)))) 

(go 
(while true 
    (println (<! navigation)))) 

Постановка значения с использованием:

(put! channels/navigation "/styles") 

Это не похоже на работу и выполняет только в первом блоке Go. Это немного надуманный пример, но я хочу использовать этот шаблон для подключения нескольких слушателей к каналу, который вернет JSON из службы socket.io.

ответ

2

Чтение с канала возвращает значение и удаляет его из канала. Если вы хотите, чтобы несколько читателей читали одни и те же значения, вам нужно несколько каналов; взгляните на функции core.async mult и tap.

+1

Спасибо @Joost. Я понял это примерно через 10 минут после того, как я создал билет и проголосовал за закрытие, как дубликат другого билета, который я нашел. Спасибо, что ответили. – Samuel

0

Возможно, вы захотите изучить функции pub и sub в core.async. Это все равно означает несколько каналов, как указано в @Joost.

Смежные вопросы