Erlang:带有多个超时子句的接收语句
接收语句是否可以有多个超时子句,如果可以,正确的语法是什么?
我想做一些类似的事情
foo(Timout1, Timeout2) ->
receive
after
Timeout1 ->
doSomething1();
Timeout2 ->
doSomething2()
end.
,具体取决于 Timeout1
或 Timeout2
中哪个较小,doSomething1()
或 doSomething2
> 被调用。但是,上面的代码会导致语法错误。
如果,正如我开始怀疑的那样,这是不可能的,那么以合适的 Erlangy 方式实现相同结果的最佳方法是什么?
提前致谢!
Is it possible for a receive statement to have multiple timeout clauses, and if so, what is the correct syntax?
I want to do something like
foo(Timout1, Timeout2) ->
receive
after
Timeout1 ->
doSomething1();
Timeout2 ->
doSomething2()
end.
where, depending on which of Timeout1
or Timeout2
is smaller, doSomething1()
or doSomething2
is called. However, the above code causes a syntax error.
If, as I'm beginning to suspect, this is not possible, what is the best way to achieve the same outcome in a suitable Erlangy manner?
Thanks in advance!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不,你不能。只需在接收之前决定要做什么。
或
等等
No, you can't. Just decide what to do before receive.
or
etc.
您可能应该使用“gen_fsm”和“timer:send_after”的组合。
You should probably use a combination of 'gen_fsm' and 'timer:send_after'.