Jadwalkan kode

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Penjadwalan kode berguna dalam banyak situasi, seperti memastikan kode dieksekusi setelah tindakan atau siklus tertentu selesai, atau menunda kode untuk jangka waktu tertentu.Anda dapat menggunakan perpustakaan untuk mengoptimalkan penjadwal tugas Roblox untuk mengelola dan menjadwalkan kode.Anda juga dapat menggunakan perpustakaan serupa yang disebut coroutine untuk menjadwalkan kode yang memiliki beberapa fungsi tambahan.

Metode umum

Berikut adalah metode paling umum task yang digunakan untuk menjadwalkan kode.Anda harus menggunakan metode tugas atas metode penjadwalan lama, seperti wait(), untuk memastikan kode Anda berjalan optimal.

Tabel berikut daftar metode global warisan yang relevan dan rekan-rekannya yang lebih dioptimalkan:

| Metode global lama | Metode tugas | Alternatif tambahan | | :-------------------------------------- | :------------------------------------------------- | :------------------------------------------------- | | wait() | task.wait() | RunService.Heartbeat | | wait(n) | Library.task.wait()\|task.wait(n) | | | spawn(f) | Library.task.defer()\|task.defer(f) | Library.task.delay()\|task.delay(0, f) | | delay(n, f) | Library.task.delay()\|task.delay(n, f) | | | spawn(function() f(uv1, ...) end) | Library.task.defer()\|task.defer(f, uv1, ...) | Library.task.delay()\|task.delay(0, f, uv1, ...) | | delay(n, function() f(uv1, ...) end) | Library.task.delay()\|task.delay(n, f, uv1, ...) | |

task.spawn

task.spawn() mengambil thread atau fungsi dan melanjutkannya kembali segera melalui penjadwal mesin.Argumen tambahan dikirim ke thread atau fungsi yang dihentikan kembali.

Contoh kode berikut adalah contoh bagaimana Anda dapat menggunakan task.spawn() ketika memanggil fungsi yang dapat menghasilkan saat mengulangi serangkaian objek:


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

tugas.defer

task.defer() mengambil thread atau fungsi dan menundanya sampai siklus lanjutan berikutnya dilanjutkan di mana ia diambil kembali dengan penjadwal mesin.Argumen tambahan dikirim ke thread atau fungsi yang dilanjutkan.

Anda biasanya harus menggunakan ini ketika Anda ingin perilaku serupa ke task.spawn() tetapi tidak peduli dengan thread yang segera dijalankan.Contoh kode berikut menunjukkan bagaimana pernyataan print() untuk "A" akan ditunda sampai setelah pernyataan print() untuk "B" dieksekusi:


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

tugas.延迟

task.delay() mengambil thread atau fungsi dan menjadwalkannya untuk dilanjutkan setelah jumlah waktu yang diberikan habis pada langkah berikutnya Heartbeat.Thread dilanjutkan dengan penanganan kesalahan bawaan dan dukungan untuk fitur mesin lainnya.Argumen tambahan apa pun dikirim ke thread atau fungsi yang dilanjutkan.

Karena waktu penundaan yang sebenarnya dapat bervariasi, contoh kode berikut menunjukkan bagaimana Anda dapat menghitungnya dengan melewati waktu saat ini sebagai argumen:


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

Durasi nol akan menyebabkan thread atau fungsi dilanjutkan pada langkah berikutnya.

tugas.wait

task.wait() menghasilkan thread saat ini sampai durasi yang diberikan (dalam detik) berlalu dan kemudian melanjutkan thread pada langkah berikutnya Heartbeat .

Waktu hasil yang sebenarnya mungkin bervariasi. Sampel kode berikut menunjukkan bagaimana metode ini mengembalikannya untuk kenyamanan:

Karena waktu penundaan yang sebenarnya dapat bervariasi, contoh kode berikut menunjukkan bagaimana Anda dapat mendapatkan waktu aktual dengan menyimpan nilai return metode:


local elapsedTime = task.wait(2) -- tunggu selama 2 detik
print(elapsedTime) --> 2.0792941

Jika tidak ada durasi yang diberikan, durasi akan default ke nol berarti thread akan secara otomatis dilanjutkan pada langkah berikutnya.Ini berarti task.wait() adalah sama dalam perilaku dengan RunService.Heartbeat .