5

我尝试将消息投射到 gen_server:

 gen_server:cast({global, ID}, {watchers}).

处理程序是:

handle_cast({watchers}, State) ->
    case State#table_state.watchers of
    [] ->
        {reply, no_watchers, State};
    _ ->
        {reply, State#table_state.watchers, State}
    end;

但是当我执行gen_server:castgen_server 时出现错误:

=ERROR REPORT==== 29-Apr-2011::18:26:07 ===
** Generic server 1 terminating 
** Last message in was {'$gen_cast',{watchers}}
** When Server state == {table_state,1,"1",11,[]}
** Reason for termination == 
** {bad_return_value,{reply, no_watchers, {table_state,3,"3",11,[]}}}

为什么我会得到bad_return_value

4

1 回答 1

13

您不能使用 cast 回复(请参阅gen_server文档)。这就是投射异步消息而不是使用调用的全部意义。

在您的情况下,您想返回回复,因此请gen_server:call/2改用。

于 2011-04-29T12:53:30.423 回答