Functional programming 在Phoenix中呈现的响应在哪里?
我来自Rails,了解控制器应该做什么,但不明白凤凰城的魔法是如何发生的。Elixir是无状态的,因此不能修改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
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