Código de Agendamento

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

O código de agendamento é útil em muitas situações, como garantir que o código seja executado após uma ação ou ciclo específicos, ou atrasar o código por um tempo específico. Você pode usar a biblioteca task para otimizar o Task Scheduler do Roblox para gerenciar e agendar código. Você também pode usar uma biblioteca

Métodos Comuns

Os seguintes são os métodos mais comuns task métodos usados para agendar código. Você deve usar os métodos de tarefa sobre métodos de agendamento herdados, como wait() , para garantir que seu código seja executado de forma eficiente.

A tabela a seguir lista os métodos globais de herança relevantes e suas contrapartes preferidas, mais otimizadas:

| Métodos Globais de Legado | Métodos de Tarefa | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |

tarefa.gerar

task.spawn() leva um subprocesso ou função e o retoma imediatamente através do Agendadordo motor. Argumentos adicionais são passados para o subprocesso ou função que está sendo retomado.

O seguinte código de exemplo mostra como você pode usar task.spawn() ao chamar uma função que pode ser executada enquanto itera sobre um conjunto de objetos:


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

tarefa.defer

task.defer() leva um subprocesso ou função e o diferencia até o próximo ciclo de ressurgimento no qual ele é retomado com o Agendadordo motor. Argumentos adicionais são passados para o subprocesso ou função de ressurgimento.

Você deve usar isso quando quiser comportamento semelhante a task.spawn() , mas não se importa em executar imediatamente. A seguinte código de exemplo ilustra como a declaração print() para "A" vai diferir até depois que a declaração 1> print1> para 4>.4> é executada:


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

tarefa.延遲

task.delay() leva um subprocesso ou função e o agenda para resumir após o tempo dado depois da próxima etapa Heartbeat . O subprocesso resume com controle de erros e suporte para outros recursos do motor. Quaisquer argumentos adicionais são passados para o subprocesso ou função de resumir.

Como o tempo de atraso real pode variar, o seguinte código de exemplo ilustra como você pode calcular isso passando o tempo atual como um argumento:


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

Uma duração de zero resultará no thread ou função retomar na próxima etapa.

tarefa.wait

task.wait() yields the current thread until the given duration (in seconds) elapses and then resumes the thread on the next Heartbeat step.

O tempo de colheita real pode variar. A seguinte amostra de código ilustra como este método retorna para conveniência:

Como o tempo de atraso real pode variar, o seguinte código de exemplo ilustra como você pode obter o tempo real armazenando o valor de retorno do método:


local elapsedTime = task.wait(2) -- espere 2 segundos
print(elapsedTime) --> 2.0792941

Se nenhuma duração for atribuída, a duração padrão será de 0, o que significa que o subprocesso será automaticamente retomado na próxima etapa. Isso significa que task.wait() é equivalente em comportamento a RunService.Heartbeat.