receive_response(RequestId, Timeout) -> Result
OTP 23.0RequestId = request_id()
Timeout = timeout_time()
Result = term()
收到回複call
調用進程先前使用的請求send_request/4
.RequestId
應該是之前創建的返回值send_request/4
調用,並且相應的響應不應已被接收並處理完成receive_response()
,check_response/4
, 或者wait_response/4
.
Timeout
設置等待響應的時間上限。如果操作超時,則由以下標識的請求RequestId
將被放棄,然後{erpc, timeout}
error
將引發異常。也就是說,超時後將不會收到與請求相對應的響應。如果收到響應,則call
操作完成並返回結果或引發異常。可以引發的異常對應於可以引發的異常call/5
.receive_response/2
將會失敗{erpc, badarg}
如果/當無效時例外RequestId
被檢測到或者如果無效Timeout
已通過。
對函數的調用my_call(Node, Module, Function, Args, Timeout)
下麵相當於調用erpc:call(Node, Module, Function, Args,
Timeout)
如果一個人忽視了績效。call()
可以利用選擇性接收優化,無需從頭開始掃描消息隊列以查找匹配的消息。這send_request()/receive_response()
然而,組合不能利用這種優化。
my_call(Node, Module, Function, Args, Timeout) ->
RequestId = erpc:send_request(Node, Module, Function, Args),
erpc:receive_response(RequestId, Timeout).
如果 erpc
操作失敗,但不知道該函數是否/將被應用(即超時或連接丟失),則調用者將不會收到有關結果的任何進一步信息(如果/當應用該函數時)完成。如果應用函數顯式地與調用進程通信,那麽這種通信當然可以到達調用進程。
相關用法
- erlang recv(Socket)用法及代碼示例
- erlang recompose(URIMap)用法及代碼示例
- erlang reverse用法及代碼示例
- erlang rename用法及代碼示例
- erlang remove用法及代碼示例
- erlang registered用法及代碼示例
- erlang register用法及代碼示例
- erlang repair_continuation(Continuation, MatchSpec)用法及代碼示例
- erlang register(RegName, PidOrPort)用法及代碼示例
- erlang registered()用法及代碼示例
- erlang read_file_info(Filename)用法及代碼示例
- erlang read_file_info(File)用法及代碼示例
- erlang remove(Key, Map1)用法及代碼示例
- erlang referenced_byte_size(Binary)用法及代碼示例
- erlang replace(Subject, Pattern, Replacement, Options)用法及代碼示例
- erlang replace(String, SearchPattern, Replacement)用法及代碼示例
- erlang reverse(String :: unicode:chardata())用法及代碼示例
- erlang reverse(List1, Tail)用法及代碼示例
- erlang replace(Subject, RE, Replacement, Options)用法及代碼示例
- erlang relation_to_family(BinRel)用法及代碼示例
- erlang relative_product(ListOfBinRels)用法及代碼示例
- erlang relative_product1(BinRel1, BinRel2)用法及代碼示例
- erlang restriction(BinRel1, Set)用法及代碼示例
- erlang restriction(SetFun, Set1, Set2)用法及代碼示例
- erlang resolve(RefURI, BaseURI)用法及代碼示例
注:本文由純淨天空篩選整理自erlang.org大神的英文原創作品 receive_response(RequestId, Timeout) -> Result。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。