以延迟间隔循环使用灵药

时间:2016-06-06 10:31:28

标签: elixir

我在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:)

1 个答案:

答案 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表达式准备好接收它,它仍会在邮箱中等待。