waitFor
Poll un callback à chaque frame jusqu'à un retour non-nil, avec timeout. Une promesse polling pour FiveM.
Poll un callback à chaque frame jusqu'à un retour non-nil, avec timeout. Une promesse polling pour FiveM.
lib.waitFor(cb, errorMessage?, timeout?) poll un callback à chaque frame jusqu'à ce qu'il renvoie une
valeur non-nil, puis renvoie cette valeur. C'est une promesse basée sur le polling pour FiveM —
attendre qu'une entité spawn, qu'un model charge, ou qu'un export soit disponible.
-- attendre que le joueur monte dans un véhicule
local vehicle = lib.waitFor(function()
local veh = GetVehiclePedIsIn(PlayerPedId(), false)
if veh ~= 0 then return veh end
end, 'le joueur n est jamais monté dans un véhicule', 10000)cbfunctionrequiredÉvalué à chaque frame. Renvoie nil tant que la condition n'est pas remplie, et la valeur attendue une fois remplie.
errorMessagestringoptionalMessage levé au timeout. Défaut 'failed to resolved callback'.
timeoutnumber | falseoptionalAttente max en ms. Omis = 1000. Passer false désactive le timeout (attente infinie).
Renvoie la première valeur non-nil produite par le callback. Lève une erreur via error() si le
timeout est atteint avant.
Le timeout par défaut n'est que de 1000 ms — augmente-le pour les opérations longues (chargement de
model, query DB), et évite false (attente infinie) en production, car une condition qui ne se résout
jamais bloque le thread indéfiniment. Le callback tourne ~60×/seconde, alors garde-le léger — pas de
native lourde ni de query DB à chaque frame. Un piège : seul nil déclenche un nouveau tick, donc un
callback qui renvoie false se résout immédiatement avec false. Il utilise Wait, donc il doit
tourner dans un thread Citizen, et il throw au timeout — wrappe-le dans pcall pour gérer l'échec.