Elixir GenServer handle_call回调返回类型

Tan*_*ano 1 elixir gen-server

我正在实施一个GenServer,我很困惑.

我知道handle_cast是异步的,这意味着调用者不等待回复,我们返回一个这样的元组:{:noreply, new_state}.

我注意到我们也可以从中返回相同的元组handle_call.这是否意味着如果我有一个handle_call返回{:noreply, new_state},它不会返回任何东西但会同步?调用者的流程将等待GenServer.call命令,然后在handle_call函数完成后继续?

m3c*_*ers 5

调用者将阻止等待whenever您调用GenServer.call 的回复.handle_call接受{:noreply, state}作为有效回报的原因是允许您手动(从任何地方)回复/ 2.

调用进程将阻止等待reply(并根据您的设置等超时),同样如此.

第二个参数handle_callback是一个from引用,如下所示handle_call(msg, from, state),可以与之一起使用reply/2.