我在elixir中有以下代码,我想在一个循环中调用一个函数--parseCsvFiles:
def loopParseFiles do
spawn(Parse_Csv,:parseCsvFiles,[self])
receive do
{:parse_complete} -> loopParseFiles
after
20000 -> loopParseFiles
end
end
在上面的代码中,我想设置一个延迟,以便在20000毫秒之后或之后回调loopParseFiles函数:收到parse_complete - 以较多者为准。
TIA:)
答案 0 :(得分:2)
所以你想要总是等待至少20秒,然后等到收到:parse_complete
?你可以这样做:
def loopParseFiles do
spawn(Parse_Csv,:parseCsvFiles,[self])
:timer.sleep 20000
receive do
{:parse_complete} -> loopParseFiles
end
end
即使在:parse_complete
通话期间收到:timer.sleep
消息,一旦receive
表达式准备好接收它,它仍会在邮箱中等待。