2011-05-25 49 views
6

Me gustaría crear un temporizador usando Lua, de forma que pudiera especificar una función de devolución de llamada que se activará después de que hayan transcurrido X segundos.Crear un temporizador usando Lua

¿Cuál sería la mejor manera de lograrlo? (Necesito descargar algunos datos de un servidor web que se analizará una o dos veces por hora)

Saludos.

Respuesta

4
+0

¿Podría darme un ejemplo de cómo usar la alarma de una manera simple para llamar a una función cada minuto? – Goles

+0

¿Miraste el código? Hay un archivo "test.lua" en el archivo lalarm. –

+0

Sí, gracias, creo que tengo el ejemplo ahora. – Goles

0

Si es aceptable para usted, usted puede intentar LuaNode. El siguiente código establece un temporizador:

setInterval(function() 
    console.log("I run once a minute") 
end, 60000) 
process:loop() 
5

Si no se necesita una precisión milisegundo, usted podría ir a por una solución corrutina, que reanudar periódicamente, al igual que al final de su ciclo principal, así:

require 'socket' -- for having a sleep function (could also use os.execute(sleep 10)) 
timer = function (time) 
    local init = os.time() 
    local diff=os.difftime(os.time(),init) 
    while diff<time do 
     coroutine.yield(diff) 
     diff=os.difftime(os.time(),init) 
    end 
    print('Timer timed out at '..time..' seconds!') 
end 
co=coroutine.create(timer) 
coroutine.resume(co,30) -- timer starts here! 
while coroutine.status(co)~="dead" do 
    print("time passed",select(2,coroutine.resume(co))) 
    print('',coroutine.status(co)) 
    socket.sleep(5) 
end 

Este utiliza la función dormir en LuaSocket, se puede usar cualquier otra de las alternativas sugeridas en el Lua-users Wiki

1

uso Script.SetTimer (intervalo, callbackFunction)

Cuestiones relacionadas