Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Functional programming 在Phoenix中呈现的响应在哪里?_Functional Programming_Elixir_Phoenix Framework - Fatal编程技术网

Functional programming 在Phoenix中呈现的响应在哪里?

Functional programming 在Phoenix中呈现的响应在哪里?,functional-programming,elixir,phoenix-framework,Functional Programming,Elixir,Phoenix Framework,我来自Rails,了解控制器应该做什么,但不明白凤凰城的魔法是如何发生的。Elixir是无状态的,因此不能修改conn和\u参数。text-conn,“hello”如何记住“hello”,因为我不会从索引中返回它 我怀疑还有另一个过程可以跟踪响应。如果是,这是否意味着一个普通请求有多个进程 text-conn,“hello”如何记住“hello”,因为我不会从索引中返回它 没有!在您调用text之后,响应(在本例中为“hello”)会立即写入conn。您可以使用以下方法对此进行测试: defmo

我来自Rails,了解控制器应该做什么,但不明白凤凰城的魔法是如何发生的。Elixir是无状态的,因此不能修改
conn
\u参数。
text-conn,“hello”
如何记住“hello”,因为我不会从索引中返回它

我怀疑还有另一个过程可以跟踪响应。如果是,这是否意味着一个普通请求有多个进程

text-conn,“hello”
如何记住“hello”,因为我不会从索引中返回它

没有!在您调用
text
之后,响应(在本例中为“hello”)会立即写入
conn
。您可以使用以下方法对此进行测试:

defmodule TwittEx.PageController do
  require IEx
  use TwittEx.Web, :controller

  def index(conn, _params) do
    text conn, "hello"
    "dummy string so text/2 isn't returned"
  end
end
如果您访问此页面,您将在1秒多一点的时间内看到响应,而不是6秒

如果尝试调用由
text
返回的新
conn
上的
text
,则会出现
Plug.conn.alreadysinterror
错误,因为新结构的
状态为
:sent
。但是,如果在同一个
conn
上尝试调用它两次,则不会出现错误,第二次写入将被忽略。我很确定,插件处理程序有责任忽略第二次写入,因为我刚刚验证了
Plug
如果这样做的话,只会再次调用处理程序的
send\u resp

text-conn,“hello”
如何记住“hello”,因为我不会从索引中返回它

没有!在您调用
text
之后,响应(在本例中为“hello”)会立即写入
conn
。您可以使用以下方法对此进行测试:

defmodule TwittEx.PageController do
  require IEx
  use TwittEx.Web, :controller

  def index(conn, _params) do
    text conn, "hello"
    "dummy string so text/2 isn't returned"
  end
end
如果您访问此页面,您将在1秒多一点的时间内看到响应,而不是6秒

如果尝试调用由
text
返回的新
conn
上的
text
,则会出现
Plug.conn.alreadysinterror
错误,因为新结构的
状态为
:sent
。但是,如果在同一个
conn
上尝试调用它两次,则不会出现错误,第二次写入将被忽略。我很确定,插件处理程序有责任忽略第二次写入,因为我刚刚验证了
Plug
如果这样做的话,只会再次调用处理程序的
send\u resp