Используя 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/

Другие вопросы по тегам