Skip to content

tw.timeout

Cote : Shared (client + server)

Utilitaires asynchrones : timeouts, boucles recurrentes, debounce et anti-spam.

Fonctions

tw.timeout.set(msec, cb, ...)

Execute un callback apres un delai.

ParametreTypeDescription
msecinteger ou functionDelai en ms, ou une fonction bloquante d'attente
cbfunctionCallback a executer apres le delai
...anyArguments passes a cb

Retour : TimeoutClass (handle annulable)


tw.timeout.loop(msec, cb, ...)

Cree une boucle recurrente qui execute le callback a intervalle fixe.

ParametreTypeDescription
msecinteger ou functionIntervalle en ms, ou une fonction bloquante d'attente
cbfunctionCallback a executer a chaque iteration
...anyArguments passes a cb

Retour : TimeoutClass — appelez :clear() pour arreter la boucle.


tw.timeout.delay(id, msec, cb, ...)

Debounce : annule tout timeout precedent avec le meme id et relance le timer. Seul le dernier appel dans la fenetre de delai sera execute.

ParametreTypeDescription
idstringIdentifiant unique du groupe de debounce
msecintegerDelai en ms
cbfunctionCallback a executer
...anyArguments passes a cb

tw.timeout.noSpam(id, msec, cb, ...)

Anti-spam : le premier appel s'execute immediatement, puis les appels suivants dans la fenetre de delai sont ignores.

ParametreTypeDescription
idstringIdentifiant unique du groupe anti-spam
msecintegerDuree du cooldown en ms
cbfunctionCallback a executer
...anyArguments passes a cb

Methodes TimeoutClass

L'objet retourne par tw.timeout.set et tw.timeout.loop.

MethodeDescription
:clear()Annuler le timeout ou arreter la boucle
:start()Demarrer manuellement (appele automatiquement a la creation)
:execute()Executer le callback immediatement
:setCb(cb)Changer la fonction callback
:setMsec(msec)Changer le delai/intervalle

Exemples

Action differee simple

lua
tw.timeout.set(5000, function()
    print("5 seconds passed")
end)

Timeout annulable

lua
local timer = tw.timeout.set(10000, function()
    print("This may never print")
end)

-- Annuler avant qu'il ne se declenche
timer:clear()

Boucle recurrente

lua
local loop = tw.timeout.loop(1000, function()
    print("Every second")
end)

-- Arreter la boucle plus tard
loop:clear()

Debounce (seul le dernier appel s'execute)

lua
-- Si appele plusieurs fois rapidement, seul le dernier appel s'execute (2s apres le dernier declenchement)
tw.timeout.delay("save_position", 2000, function()
    savePlayerPosition()
end)

Anti-spam (premier appel uniquement, cooldown bloque les suivants)

lua
-- S'execute immediatement au premier appel, puis ignore les appels pendant 3 secondes
tw.timeout.noSpam("collect", 3000, function()
    startCollection()
end)

Passage d'arguments

lua
tw.timeout.set(2000, function(item, amount)
    print("Collected " .. amount .. "x " .. item)
end, "apple", 5)

Notes

  • tw.timeout.set et tw.timeout.loop retournent un objet TimeoutClass. Gardez une reference si vous devez annuler plus tard.
  • tw.timeout.delay est ideal pour les champs de recherche ou les patterns de sauvegarde automatique ou vous voulez attendre que l'utilisateur arrete de taper.
  • tw.timeout.noSpam est ideal pour les boutons d'interaction ou vous voulez empecher les activations repetees rapides.
  • Quand msec est une fonction au lieu d'un entier, elle agit comme une fonction d'attente bloquante personnalisee (la fonction doit yield/wait elle-meme).

Premium RedM Scripts — Multi-Framework