排程代码

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

排程代码有助于在多个情况下,例如确保代码在特定操作或周期完成后执行,或者在特定时间延迟代码,以便优化 Roblox 的 task 来管理和安排验证码。您可以使用 Library.task 图书优化 Roblox 的 coroutine 来管理和安排代码。

常用方法

以下是最常用的 task 方法用于安排代验证码。您应该使用任务方法比过传统排程方法,例如 wait() 确保您的代码运行优惠。

下表列出了相关的传统全球方法和其优化后的首选对象:

| 传统全球方法 | 任务方法 | 额外替代方法 | | :-------------------------------- | : | | wait() | task.wait() | RunService.Heartbeat | 2> Library.task.延迟(0, f)]2> | 5> Library.task.延迟(0, f

任务重生点

task.spawn() 需要一个线程或函数,并在 即时 通过引擎的调度器重新恢复。额外的参数通过线程或函数重新恢复。

下面的代码示例是您使用 task.spawn() 时调用可能在一组对象上反复创建时产生的函数的示例:


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

任务。延迟

task.defer() 需要一个线程或函数,并将其推迟到下一个 恢复周期,在那里它与引擎的调度器重新开始。额外的参数通过线程或函数重新传递给线程或函数。

您通常应该使用这个,但不会关注即时运重生点的线程。以下代码示例显示了如何使用 task.spawn() 声明为 print() 直到 "A" 声明为 2>B2> 执行:


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

任务延迟

task.delay() 使用线程或函数,并在指定的时间后对下一个 Heartbeat 步骤进行重新计划。线程继续使用内置错误处理和支持其他引擎功能。任何额外的参数都通过线程或函数重新计划。

由于实际延迟时间可能会变化,以下代码示例显示了如何通过将当前时间作为参数传递来计算它:


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

零的持续时间会导致下一步的线程或函数继续。

任务。等待

task.wait() 在指定的持续时间 (在秒) 结束后,将下一个线程恢复到运行状态,然后在下一个 Heartbeat 步骤恢复到运行状态。

实际的生产时间可能会变化。以下代码示例显示了这个方法如何为方便返回它:

由于实际延迟时间可能会变化,以下代码示例显示您如何通过存储方法的返回值获得实际时间:


local elapsedTime = task.wait(2) -- 等待 2 秒
print(elapsedTime) --> 2.0792941

如果没有指定任何持续时间,该持续时间将默认为零,这意味着线程将在下一步自动恢复。这意味着 task.wait() 在行为上与 RunService.Heartbeat 相同。