task

Pokaż przestarzałe

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Biblioteka zadań pozwala na planowanie funkcji i wątków za pomocą harmonogramu silnika.

Funkcje dostępne w tej bibliotece ogólnie wspierają funkcje i wątki.W większości przypadków wystarczy użycie funkcji, ale w przypadkach bardziej zaawansowanych zaleca się zapoznanie się z biblioteką coroutine.

Podsumowanie

Funkcje

  • spawn(functionOrThread : function | coroutine,... : Variant):coroutine

    Wezwij/wznów funkcję/koroutine natychmiast za pośrednictwem planera silnika.

  • defer(functionOrThread : function | coroutine,... : Variant):coroutine

    Wezwij/wznów funkcję/kolejkę w ostatniej fazie obecnego cyklu odnowienia.

  • delay(duration : number,functionOrThread : function | coroutine,... : Variant):coroutine

    Planuje funkcję/koroutine, która ma być wywołana/wznawiana po następnym bicie serca po upływie określonego czasu (w sekundach), bez ograniczania prędkości.

  • Spowodowuje, że następujący kod jest uruchamiany równolegle.

  • Spowodowuje uruchomienie następującego kodu w trybie szeregowym.

  • wait(duration : number):number

    Wydaje obecny wątek bez ograniczania prędkości.

  • cancel(thread : coroutine):()

    Anuluje wątek, uniemożliwiając jego wznowienie.

Funkcje

Akceptuje funkcję lub wątek (zwrócony przez coroutine.create() ) i natychmiast wzywa/odnawia go za pośrednictwem harmonogramera silnika.Argumenty po pierwszym są wysyłane do funkcji/wątku.

Jeśli skrypt wezwania jest obecnie uruchamiany w fazie wykonania serjalnej, to funkcja lub wątek wygenerowany zostaje w obecnej fazie wykonania serjalnej.Jeśli skrypt wezwania jest obecnie uruchamiany w fazie wykonania równoległego, wówczas funkcja lub wątek wygenerowany zostaje w obecnej fazie wykonania równoległego.Aby uzyskać więcej informacji, zobacz Równoległe Luau.

Parametry

functionOrThread: function | coroutine

Funkcja lub wątek zwrócony przez coroutine.create().

...: Variant

Argumenty do wysłania do funkcji lub wątku.

Zwroty

Planowany wątek.

Akceptuje funkcję lub wątek (zwrócony przez coroutine.create() ) i odkłada go do końca obecnego punktu wznowienia w obecnym ramie.

Funkcja ta powinna być używana, gdy pożądane jest podobne zachowanie do task.spawn(), ale wątek nie musi uruchamiać się natychmiast.

Jeśli skrypt wezwania jest obecnie uruchamiany w fazie wykonania serialnej, to opóźniona funkcja lub wątek zostaje wznowiony w fazie wykonania serialnej.Jeśli skrypt wezwania jest obecnie uruchamiany w fazie wykonania równoległej, to opóźniona funkcja lub wątek zostaje wznowiona w fazie wykonania równoległej.Aby uzyskać więcej informacji, zobacz Równoległe Luau.

Parametry

functionOrThread: function | coroutine

Funkcja lub wątek zwrócony przez coroutine.create.

...: Variant

Argumenty do wysłania do funkcji lub wątku.

Zwroty

Planowany wątek.

Akceptuje funkcję lub wątek (zwrócony przez coroutine.create() ) i planuje jego wezwanie/wznowienie na następny Heartbeat po upływie określonej liczby sekund.Argumenty po drugim są wysyłane do funkcji/wątku.

Funkcja ta różni się od przestarzałej globalnej funkcji w tym, że nie występuje ograniczenie prędkości : na tym samym kroku, na którym upłynęło wystarczająco dużo czasu, gwarantuje się, że funkcja zostanie wezwana/wznowiona.Zapewnienie okresu zerowego ( 0 ) zagwarantuje, że funkcja zostanie wywołana na najbliższym Heartbeat .

Możesz obliczyć rzeczywisty czas spędzony przez wezwanie os.clock() podczas planowania i w zaplanowanej funkcji.

Jeśli skrypt wezwania jest obecnie uruchamiany w fazie wykonania serjalnej, to opóźniona funkcja lub wątek zostaje wznowiony w fazie wykonania serjalnej.Jeśli skrypt wezwania jest obecnie uruchamiany w fazie wykonania równoległej, to opóźniona funkcja lub wątek zostaje wznowiona w fazie wykonania równoległej.Aby uzyskać więcej informacji, zobacz Równoległe Luau.

Parametry

duration: number

Minimalna liczba sekund, które muszą upłynąć przed wezwaniem/wznawianiem funkcji/wątku.

functionOrThread: function | coroutine
...: Variant

Argumenty, które należy przekazać funkcji/wątkowi, gdy ma zostać wezwana/wznowiona.

Zwroty

Planowany wątek.

desynchronize

()

Jeśli skrypt wezwania jest obecnie uruchamiany w fazie wykonania rzędowej, desynchronize() zawiesza skrypt i skrypt zostanie wznowiony w następnej fazie równoległego wykonania.Jeśli skrypt wezwania jest obecnie uruchamiany w fazie wykonania równoległej, desynchronize() natychmiast wraca i nie ma żadnego wpływu.

Tylko skrypty, które są potomkami Actor mogą wezwać tę metodę.Jeśli skrypt poza Actor wezwie tę metodę, zostanie wywołany błąd.ModuleScripts może również wezwać desynchronize(), tak długo jak instancjalizacja modułu, który go wzywa, była wymagana przez skrypt, który jest potomkiem Actor.

Aby uzyskać więcej informacji, zobacz Równoległe Luau.

Zwroty

()

synchronize

()

Jeśli skrypt wezwania jest obecnie uruchamiany w fazie wykonania równoległego, synchronize() zawiesza skrypt i skrypt zostanie wznowiony w następnej fazie wykonania serjalnej.Jeśli skrypt wezwania jest obecnie uruchamiany w fazie wykonania serialnej, synchronize() natychmiast wraca i nie ma żadnego wpływu.

Tylko skrypty, które są potomkami Actor mogą wezwać tę metodę.Jeśli skrypt poza Actor wezwie tę metodę, zostanie wywołany błąd.ModuleScripts może również wezwać synchronize(), tak długo jak instancjalizacja modułu, który go wzywa, była wymagana przez skrypt, który jest potomkiem Actor.

Aby uzyskać więcej informacji, zobacz Równoległe Luau.

Zwroty

()

wait

Wydaje obecny wątek, aż minie określony czas (w sekundach), następnie wznowia wątek na następnym kroku Heartbeat.Zwracana jest rzeczywista ilość czasu upłynęła.

Jeśli nie podano żadnego czasu trwania, domyślnie zostanie ustawiony na zero (0).Oznacza to, że wątek wznowi się na następnym kroku, co odpowiada w zachowaniu Class.RunService.Heartbeat:Wait()

W przeciwieństwie do przestarzałej globalnej funkcji wait(), ta funkcja nie ogranicza i gwarantuje wznowienie wątku w pierwszym sygnale serca, który pojawia się, gdy jest to konieczne.Ta funkcja zwraca również tylko czas upływu i nic więcej.

Jeśli skrypt wezwania jest obecnie uruchamiany w fazie wykonania serialnej, to skrypt zostanie wznowiony w fazie wykonania serialnej.Jeśli skrypt wezwania jest obecnie uruchamiany w fazie wykonania równoległej, to skrypt zostanie wznowiony w fazie wykonania równoległej.Aby uzyskać więcej informacji, zobacz Równoległe Luau.

Parametry

duration: number

Ilość czasu w sekundach, która powinna upłynąć przed wznowieniem obecnego wątku.

Wartość domyślna: 0

Zwroty

cancel

()

Anuluje wątek i zamyka go, uniemożliwiając jego ponowne uruchomienie ręcznie lub przez harmonogramera silnika.

Funkcja ta może być używana z innymi członkami biblioteki zadania , które zwracają wątek, aby je anulować, zanim zostaną wznowione. Na przykład:


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

Zauważ, że wątki mogą być w stanie, w którym nie można ich anulować.Na przykład wątek wykonujący obecnie i wątki, które wznowiły inną korozycję, nie mogą zostać anulowane.Jeśli tak jest, zostanie wygenerowany błąd.Jednak kod nie powinien polegać na konkretnych stanach wątku lub warunkach powodujących niepowodzenie task.cancel().Możliwe jest, że przyszłe aktualizacje wyeliminują te ograniczenia i umożliwią pomyślne anulowanie wątków w tych stanach.

Parametry

thread: coroutine

Wątek, który zostanie anulowany.

Zwroty

()