Planifier du code

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

La planification du code est utile dans de nombreuses situations, par exemple pour s'assurer que le code s'exécute après qu'une action ou un cycle spécifique soit terminé, ou pour retarder le code pendant une durée spécifique. Vous pouvez utiliser la bibliothèque task pour optimiser le planificateur de tâches de Roblox afin de gérer et de planifier le code. Vous pouvez également utiliser une bibliothèque similaire appelée coroutine pour planifier du code qui possède des fonctionnalités supplémentaires.

Méthodes courantes

Voici les méthodes task les plus courantes utilisées pour planifier du code. Vous devriez préférer les méthodes de tâche aux méthodes de planification héritées, telles que wait(), pour vous assurer que votre code s'exécute de manière optimale.

Le tableau suivant répertorie les méthodes globales héritées pertinentes et leurs équivalents optimisés préférés :

Méthodes globales héritéesMéthodes de tâcheAlternatives supplémentaires
wait()task.wait()RunService.Heartbeat
wait(n)task.wait(n)
spawn(f)task.defer(f)task.delay(0, f)
delay(n, f)task.delay(n, f)
spawn(function() f(uv1, ...) end)task.defer(f, uv1, ...)task.delay(0, f, uv1, ...)
delay(n, function() f(uv1, ...) end)task.delay(n, f, uv1, ...)

task.spawn()

task.spawn() prend un thread ou une fonction et le reprend immédiatement via le planificateur du moteur. Des arguments supplémentaires sont passés au thread ou à la fonction en cours de reprise.

L'exemple de code suivant illustre comment vous pouvez utiliser task.spawn() lors de l'appel d'une fonction qui peut suspendre son exécution tout en itérant sur un ensemble d'objets :


local function playerAdded(player)
print(player)
end
for _, player in Players:GetPlayers() do
task.spawn(playerAdded, player)
end

task.defer()

task.defer() prend un thread ou une fonction et le différé jusqu'à la fin du point de reprise actuel dans le cadre actuel. Des arguments supplémentaires sont passés au thread ou à la fonction en reprise.

Vous devriez généralement utiliser cela lorsque vous souhaitez un comportement similaire à task.spawn() mais que vous ne vous souciez pas du thread s'exécutant immédiatement. L'exemple de code suivant illustre comment l'instruction print() pour "A" sera différée jusqu'après l'exécution de l'instruction print() pour "B" :


task.defer(print, "A")
print("B")
--> B
--> A

task.delay()

task.delay() prend un thread ou une fonction et le planifie pour reprise après l'écoulement de la durée donnée au prochain pas de Heartbeat. Le thread reprend avec une gestion d'erreur intégrée et un support pour d'autres fonctionnalités du moteur. Tous les arguments supplémentaires sont passés au thread ou à la fonction en reprise.

Étant donné que le temps de délai réel peut varier, l'exemple de code suivant illustre comment vous pouvez le calculer en passant l'heure actuelle comme argument :


task.delay(2, function(scheduledTime)
print(os.clock() - scheduledTime) --> 2.038702
end, os.clock())

Une durée de zéro entraînera la reprise du thread ou de la fonction au prochain pas.

task.wait()

task.wait() suspend le thread actuel jusqu'à l'écoulement de la durée donnée (en secondes) et reprend ensuite le thread au prochain pas de Heartbeat.

Le temps de suspension réel peut varier. L'exemple de code suivant illustre comment cette méthode renvoie ce temps pour commodité :

Étant donné que le temps de délai réel peut varier, l'exemple de code suivant illustre comment vous pouvez obtenir le temps réel en stockant la valeur de retour de la méthode :


local elapsedTime = task.wait(2) -- Attendre 2 secondes
print(elapsedTime) --> 2.0792941

Si aucune durée n'est donnée, la durée sera par défaut à zéro, ce qui signifie que le thread reprendra automatiquement au prochain pas. Cela signifie que task.wait() est équivalent en comportement à RunService.Heartbeat.

©2026 Société Roblox. Roblox, le logo Roblox et Powering Imagination font partie de nos marques déposées aux États-Unis et dans d'autres pays.