รหัสกำหนดการนัดหมายเป็นประโยชน์ในหลายสถานการณ์เช่นการให้แน่ใจว่าโค้ดจะประมวลผลหลังจากที่ดำเนินการหรือวงจรเฉพาะสำเร็จหรือล
วิธีการทั่วไป
ต่อไปนี้คือวิธีการ task รหัสคุณควรใช้วิธีการทาสก์เหนือวิธีการจัดการกำหนดเวลาในอดีตเช่น wait() เพื่อให้แน่ใจว่าโค้ดขอ
ตารางต่อไปนี้รายการวิธีการระดับโลกที่เกี่ยวข้องและคู่มือที่เหมาะสมที่สุดของพวกเขา:
| วิธีการสื่อสารระหว่างเครื่องคอมพิวเตอร์กับเครื่องพิมพ์เขียวของเรา | วิธีการสื่อสารระหว่างเครื่องคอมพิวเตอร์ของคุณกับเครื่องพิมพ์เขียวของเร
โทร.spawn
task.spawn() ใช้ธนานทรัพย์หรือฟังก์ชันและดำเนินการต่อไป ทันที ผ่านตัวปรับแต่งเวลาของเครื่องผ่านตัวปรับแต่งเวลาของเครื่อง
ตัวอย่างรหัสต่อไปนี้เป็นตัวอย่างวิธีการที่คุณสามารถใช้ task.spawn() เมื่อเรียกฟังก์ชันที่อาจจะเกิดขึ้นในขณะที่เรียกตัวแปรสองสามตัว
local function playerAdded(player)
...
(yield)
end
for _, player in Players:GetPlayers() do
task.spawn(playerAdded, player)
end
ภารกิจ.defer
task.defer() ใช้ธนานทรีหรือฟังก์ชันและเลื่อนกลับไปยังวันที่ต่อไปของวัฏจัดการ เมื่อใดก็ตามที่มันจะเริ่มต้นขึ้นด้วยตัวนับเวลาของเครื่องยนต์
คุณควรใช้สิ่งนี้เมื่อคุณต้องการพฤติกรรมที่คล้ายกันกับ task.spawn() แต่ไม่สนใจว่าเส้นทางการประมวลผลทันที ตัวอย่างโค้ดต่อไป
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())
ระยะเวลาของ zero จะนำไปสู่การเริ่มต้นใหม่ของทรีดาวน์หรือการทำงานในขั้นตอนถัดไป
รองรับ
task.wait() ให้เวลาปัจจุบันจนกว่าจะหมดอายุ (ในวินาที) แล้วสิ้นสุดการทำงานของธรรมชาติแล้วเริ่มตัวทำงานใหม่ในขั้นตอนต่อไป Heartbeat
เวลาการผลิตจริงอาจแตกต่างกัน ตัวอย่างโค้ดต่อไปนี้แสดงให้เห็นวิธีการนี้สร้างขึ้นเพื่อความสะดวก:
เนื่องจากเวลาล่าช้าที่เกิดขึ้นจริงอาจแตกต่างกันไป ตัวอย่างโค้ดต่อไปนี้แสดงให้เห็นวิธีการที่คุณสามารถรับเวลาจริงโดยการเก็บค่ากลับของวิธี:
local elapsedTime = task.wait(2) -- รอ 2 วินาทีprint(elapsedTime) --> 2.0792941
หากไม่มีระยะเวลาที่กำหนดระยะเวลาจะเริ่มต้นที่ 0 ซึ่งหมายความว่าไม่มีการประมวลผลอยู่ในขั้นตอนต่อไป นี่หมายถึง task.wait() ในการกําหนดพฤติกรรมเท่านั้น