Le calendrier du code est utile dans de nombreuses situations, telles que la garantie que le code s'exécute après qu'un certain action ou cycle ait terminé, ou la retardation du code pour une durée spécifique. Vous pouvez utiliser la bibliothèque task pour optimiser et planifier le calendrier du code. Vous pouvez également utiliser une bibliothèque similaire appelée Library.coroutine
Méthodes courantes
Les méthodes suivantes sont les plus courantes task méthodes utilisées pour planifier le code. Vous devriez utiliser les méthodes de tâche au-dessus des méthodes de planification héritées, telles que wait() , pour vous assurer que votre code s'exécute correctement.
Le tableau suivant liste les méthodes globales pertinentes et leurs homologues préférés, plus optimisés :
| Méthodes globales de héritage | Méthodes d'attribution | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
tâche.régénération, apparition
task.spawn() prend un thread ou une fonction et le reprend immédiatement via le planificateur de tâchesdu moteur à travers lequel l'argent est passé. Des arguments supplémentaires sont passés au thread ou à la fonction qui est reprise.
L'exemple de code suivant montre comment vous pouvez utiliser task.spawn() lorsque vous appelez une fonction qui peut générer pendant que vous itérez sur un ensemble d'objets :
local function playerAdded(player)
...
(yield)
end
for _, player in Players:GetPlayers() do
task.spawn(playerAdded, player)
end
tâche.defer
task.defer() prend un thread ou une fonction et le diffère jusqu'à la prochaine Cycle de résumé du cycle auquel point il est repripris avec le planificateur de tâchesdu moteur. Des arguments supplémentaires sont passés au thread ou à la fonction de résumé.
Vous devriez généralement utiliser ceci lorsque vous voulez un comportement similaire à task.spawn() mais ne vous souciez pas du thread s'exécutant immédiatement. L'exemple de code suivant montre comment la déclaration print() pour "A" » déferera jusqu'à ce que la déclaration 1> print()1> pour 4> «
task.defer(print, "A")print("B")--> B--> A
task.延迟
task.delay() prend un thread ou une fonction et le programme pour reprendre après la durée donnée de temps sur la prochaine étape Heartbeat. Le thread reprend avec une gestion des erreurs et du soutien intégrés pour les autres fonctionnalités du moteur. Tous les arguments supplémentaires sont passés au thread ou à la fonction de reprise.
Puisque le délai réel peut varier, l'exemple de code suivant montre comment vous pouvez le calculer en passant le temps actuel 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 étape.
tâche.wait
task.wait() génère la session actuelle jusqu'à la durée donnée (en secondes) et reprend la session sur la prochaine étape Heartbeat.
Le temps de récolte réel peut varier. L'exemple de code suivant montre comment ce méthode le renvoie pour la commodité :
Puisque le délai réel peut varier, le code suivant montre comment vous pouvez obtenir le délai réel en stockant la valeur de retour de la méthode :
local elapsedTime = task.wait(2) -- attendez 2 secondesprint(elapsedTime) --> 2.0792941
Si aucune durée n'est donnée, la durée par défaut est de zéro, ce qui signifie que le fil s'exécute automatiquement à la prochaine étape. Cela signifie que task.wait() est équivalent en comportement à RunService.Heartbeat.