[英]Elixir GenServer handle_call callback return type
我正在实施GenServer,我感到困惑。
我知道handle_cast
是异步的,这意味着调用方没有在等待答复,我们将返回这样的元组: {:noreply, new_state}
。
我注意到我们也可以从handle_call
返回相同的元组。 这是否意味着如果我有一个返回{:noreply, new_state}
的handle_call
,它什么也不会返回,而是会同步的? 调用者的流将等待GenServer.call
命令,然后在handle_call
函数完成后继续吗?
whenever
您调用GenServer.call whenever
,调用方将阻止等待答复。 handle_call
接受{:noreply, state}
作为有效返回的原因是允许您手动(从任何地方) 回复/ 2 。
呼叫过程将阻止等待reply
(以及超时,具体取决于您的设置等)。
handle_callback
的第二个参数是from
引用,例如handle_call(msg, from, state)
,然后可以将其与reply/2
一起使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.