task

显示已弃用

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

任务 库允许函数和线程与引擎的调度程任务计划程序进行调度。

本库中可用的函数一般支持函数和线程。在大多数情况下,使用函数即可足够,但对于更高级的情况,建议您熟悉 coroutine 图书馆。

概要

职能

职能

接受一个函数或线程(由 coroutine.create() 返回)并立即通过引擎的调度程序调用/恢复它。在第一个之后的参数发送到函数/线程。

如果调用脚本正在运行在串行执行阶段,那么生成的函数或线程在当前串行执行阶段被恢复。如果调用脚本正在并行执行阶段运行,那么生成的函数或线程在当前并行执行阶段继续运行。了解更多信息,请参阅并行 Luau

参数

functionOrThread: function | coroutine

coroutine.create() 返回的函数或线程。

...: Variant

发送到函数或线程的参数。

返回

预定的线程。

接受一个函数或线程(由 coroutine.create() 返回),并将其推迟到当前框架中的现有恢复点的结束。

当需要类似于 task.spawn() 的行为时,应使用此函数,但线程不需要立即运行。

如果调用脚本正在运行在串行执行阶段,那么延迟的函数或线程在串行执行阶段被恢复。如果调用脚本正在并行执行阶段运行,那么延迟的函数或线程在并行执行阶段恢复。了解更多信息,请参阅并行 Luau

参数

functionOrThread: function | coroutine

由 coroutin创建 or 创作.create 返回的函数或线程。

...: Variant

发送到函数或线程的参数。

返回

预定的线程。

接受一个函数或线程(由 返回)并将其安排在指定的时间秒后调用/恢复。第二个以后的参数发送到函数/线程。

该函数与过时的全球 函数不同,在 没有限制发生 : 在足够的时间过去的同一步骤中,该函数保证被调用/重新启动。提供零持续时间( 0 )将保证函数在下一个 Heartbeat 上被调用。

您可以通过调用 os.clock() 在计划和预定函数中计算实际时间。

如果调用脚本正在运行在串行执行阶段,那么延迟的函数或线程在串行执行阶段恢复。如果调用脚本正在并行执行阶段运行,那么延迟的函数或线程在并行执行阶段恢复。了解更多信息,请参阅并行 Luau

参数

duration: number

函数/线程调用/恢复前必须通过的最小秒数。

functionOrThread: function | coroutine
...: Variant

在调用/重新启动函数/线程时需要传递的参数。

返回

预定的线程。

desynchronize

()

如果调用脚本正在运行在串行执行阶段,desynchronize() 暂停脚本,脚本将在下一阶段并行执行时恢复。如果调用脚本正在并行执行阶段运行,desynchronize() 立即返回且没有效果。

只有由 Actor 下裔的脚本才能调用此方法。如果脚本在 Actor 之外调用此方法,将会发生错误。ModuleScripts 也可以调用 desynchronize() ,只要调用模块的实例化被 Actor 的子脚本需要,就可以调用它。

了解更多信息,请参阅并行 Luau

返回

()

synchronize

()

如果调用脚本正在并行执行阶段运行,synchronize() 将暂停脚本,脚本将在下一阶段的串行执行阶段恢复。如果调用脚本当前正在串行执行阶段运行,synchronize() 立即返回且没有效果。

只有由 Actor 下裔的脚本才能调用此方法。如果脚本在 Actor 之外调用此方法,将会发生错误。ModuleScripts 也可以调用 synchronize() ,只要调用模块的实例化被 Actor 的子脚本需要,就可以调用它。

了解更多信息,请参阅并行 Luau

返回

()

wait

在指定的时间(秒)过后,将当前线程产生到最后,然后在下一步的 Heartbeat 步中恢复线程。实际经过的时间数返回。

如果没有提供时间长度,它将默认为零(0)。这意味着线程在下一步继续运行,这在行为上相当于 Class.RunService.Heartbeat:Wait()

与过时的全球 wait() 不同,此函数 不会限制 并且在到期时保证在第一个心跳中恢复线程。此函数还只返回过期时间和无关的其他内容。

如果调用脚本正在运行在串行执行阶段,那么脚本在串行执行阶段继续运行。如果调用脚本正在并行执行阶段运行,那么脚本在并行执行阶段继续运行。了解更多信息,请参阅并行 Luau

参数

duration: number

在当前线程重新启动前应过期的秒数数量。

默认值:0

返回

cancel

()

取消线程并关闭它,防止它被手动或由引擎的调度程序重新启动。

这个函数可以与其他成员的 任务 库结合,返回线程以取消它们,在它们被恢复之前。例如:


local thread = task.delay(5, function()
print("Hello world!")
end)
task.cancel(thread)

请注意,线程可能处于一个无法取消的状态。例如,正在执行的线程和已恢复另一个协程的线程可能无法取消。如果这是情况,将生成一个错误。然而,代码不应依赖特定线程状态或条件导致 task.cancel() 失败。可能是未来的更新将消除这些限制,允许这些状态的线程成功取消。

参数

thread: coroutine

将被取消的线程。

返回

()