Используя alt! вместо альтов! в Clojure
У меня есть код, который пытается отправить сообщение по каналу или тайм-аут после 150 мс:
(let [[ret _] (alts!! [[work-chan parsed-body] (timeout 150)])]
(cond ret :ok :else :error))
Мне было интересно, что такое Clojure идиоматический способ отправки сообщений по каналу, это alt!! рекомендуемый способ? Если так, как именно я должен использовать это?
1 ответ
Ответил в: В clojure (core.async) в чем разница между alts и alt
alt!
должны быть использованы в go
блок, alt!!
Функция заблокирует поток.
alts!!
как alts!
, за исключением того, что будет сделано, как если бы <!!
, и путы будут сделаны как бы >!!
, будет заблокирован до завершения, и не предназначен для использования в (go ...)
блоки.
Документация: https://clojure.github.io/core.async/