http-kit通过频道发送响应和返回地图之间的区别是什么

时间:2014-04-03 07:26:45

标签: clojure http-kit

正如标题所说。通过频道发送响应和返回地图之间有什么区别。

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

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

2 个答案:

答案 0 :(得分:1)

遵循core.async频道的理论,如果您使用频道,您将拥有非阻塞通信,这意味着您的线程在http响应之前不会被阻止。如果您使用阻塞通信等待映射http响应,您的线程将被阻止

答案 1 :(得分:1)

handler-one函数使用同步方法。请求 - >响应

handle-two是实现请求的一种方式 - >响应但异步

您可以查看with-channel宏定义以获取更多实现细节(和文档)。

如果您想了解有关异步方法的更多详细信息,那么我建议您学习以下方法之一:Futures,Reactive Programming,Netty,Node.js或Vert.x