http-kit какая разница между отправкой ответа по каналу и просто возвратом карты

Как видно из названия. В чем разница между отправкой ответа через канал и просто возвратом карты.

(defn handler-one
  [request]
  (response "hello world")

(defn handler-two
  [request]
  (with-channel request channel
    (send! channel (response "hello world"))

2 ответа

Решение

handler-one Функция использует синхронный подход. Запрос -> Ответ

handle-two это способ достижения запроса -> ответ, но асинхронно.

Вы можете проверить макроопределение с каналом для получения дополнительной информации о реализации (и документации).

Если вы хотите больше узнать об асинхронном подходе в целом, я рекомендую узнать об одном из: Фьючерсы, Реактивное программирование, Netty, Node.js или Vert.x

Следуя теории каналов core.async, если вы используете каналы, у вас будет неблокируемая связь, что означает, что ваш поток не будет заблокирован до ответа http. Если вы используете блокировку связи в ожидании http-ответа карты, ваш поток будет заблокирован

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