task

แสดงที่เลิกใช้งานแล้ว

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

ห้องสมุดงาน สามารถกำหนดการให้ฟังก์ชันและกระทู้ถูกนัดหมายกับตัวจัดการกำหนดเวลาของเครื่องยนต์ได้ ฟังก์ชันที่มีอยู่ในไลบรารีนี้ส่วนใหญ่สนับสนุนฟังก์ชันและกระทู้ทั่วไปในกรณีส่วนใหญ่การใช้ฟังก์ชันเพียงพอแล้ว แต่สำหรับกรณีที่ซับซ้อนมากขึ้นแนะนำให้คุณคุ้นเคยกับไลบรารี coroutine

สรุป

ฟังก์ชัน

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

    เรียก/กลับฟังก์ชัน/คอรูตินทันทีผ่านตัวจัดกำหนดเวลาของเครื่องยนต์

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

    เรียก/ดำเนินการต่อฟังก์ชัน/คอรูตินที่สิ้นสุดรอบการหยุดชะงักปัจจุบัน

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

    กำหนดเวลาที่ฟังก์ชัน/คอรอลีนจะถูกเรียก/กลับมาในครั้งต่อไปหลังจากผ่านระยะเวลาที่กำหนด (ในวินาที) โดยไม่มีการจำกัดความเร็ว

  • ทำให้โค้ดต่อไปนี้ทำงานแบบพาราเลล

  • ทำให้โค้ดต่อไปนี้ถูกรันในแบบสายเรียง

  • wait(duration : number):number

    ให้เธรดปัจจุบันโดยไม่มีการจำกัดความเร็ว

  • cancel(thread : coroutine):()

    ยกเลิกกระทู้ทำให้ไม่สามารถดำเนินการต่อได้

ฟังก์ชัน

ยอมรับฟังก์ชันหรือกระทู้ (ตามที่ส่งกลับโดย coroutine.create() ) และเรียก/ระงับทันทีผ่านตัวจัดกำหนดเวลาของเครื่องยนต์อาร์กิวเมนต์หลังจากครั้งแรกจะถูกส่งไปยังฟังก์ชัน/กระทู้

หากสคริปต์ที่เรียกกําลังดําเนินการอยู่ในขั้นตอนการดําเนินการแบบเรียลซีรีส์ ฟังก์ชันหรือกระทู้ที่สร้างขึ้นจะถูกดําเนินการต่อในขั้นตอนการดําเนินการแบบเรียลซีรีส์ปัจจุบันหากสคริปต์ที่เรียกกําลังดําเนินการอยู่ในขั้นตอนการดําเนินการแบบพาราเลล ฟังก์ชันหรือกระทู้ที่สร้างขึ้นจะถูกดําเนินการต่อในขั้นตอนการดําเนินการแบบพาราเลลปัจจุบันสำหรับข้อมูลเพิ่มเติม ดู Luau แบบพาราเลล

พารามิเตอร์

functionOrThread: function | coroutine

ฟังก์ชันหรือกระบวนที่ส่งคืนโดย coroutine.create() .

...: Variant

อาร์กิวเมนต์ที่จะส่งไปยังฟังก์ชันหรือกระบวนการ

ส่งค่ากลับ

หัวข้อที่กำหนดไว้ล่วงหน้า

ยอมรับฟังก์ชันหรือกระทู้ (ตามที่ส่งกลับโดย coroutine.create() ) และเลื่อนออกไปจนกว่าจะสิ้นสุดจุดเลื่อนต่อไปภายในกรอบปัจจุบัน

ฟังก์ชันนี้ควรใช้เมื่อพฤติกรรมที่คล้ายกับ task.spawn() เป็นที่ต้องการ แต่กระทู้ไม่จำเป็นต้องรันทันที

หากสคริปต์ที่เรียกกําลังดําเนินการอยู่ในขั้นตอนการดําเนินการแบบเรียลไทม์ ฟังก์ชันหรือกระบวนการที่ถูกระงับจะถูกดําเนินการต่อในขั้นตอนการดําเนินการแบบเรียลไทม์หากสคริปต์ที่เรียกกําลังดําเนินการอยู่ในขั้นตอนการดําเนินการแบบพาราเลล ฟังก์ชันหรือกระทู้ที่ถูกเลื่อนก็จะถูกดําเนินการต่อในขั้นตอนการดําเนินการแบบพาราเลลสำหรับข้อมูลเพิ่มเติม ดู Luau แบบพาราเลล

พารามิเตอร์

functionOrThread: function | coroutine

ฟังก์ชันหรือกระบวนที่ส่งคืนโดย coroutine.create

...: Variant

อาร์กิวเมนต์ที่จะส่งไปยังฟังก์ชันหรือกระบวนการ

ส่งค่ากลับ

หัวข้อที่กำหนดไว้ล่วงหน้า

ยอมรับฟังก์ชันหรือกระทู้ (ตามที่ส่งกลับโดย coroutine.create() ) และกำหนดการให้เรียก/ดำเนินการต่อในภายหลังในอีก Heartbeat หลังจากระยะเวลาที่กำหนดในวินาทีหมดลงอาร์กิวเมนต์หลังจากที่สองถูกส่งไปยังฟังก์ชัน/กระทู้

ฟังก์ชันนี้แตกต่างจากฟังก์ชัน global deprecated ในที่ ไม่มีการหยุดชะงักเกิดขึ้น : ในขั้นตอนเดียวกันที่เวลาพอเพียงผ่านไปแล้ว ฟังก์ชันจะได้รับการรับประกันว่าจะถูกเรียก/ระงับการให้ระยะเวลาเป็นศูนย์ ( 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()

ไม่เหมือนกับ global ล้าสมัย wait() ฟังก์ชันนี้ ไม่ลดความเร็ว และรับประกันการดำเนินการต่อของスレッドในครั้งแรกที่เกิดการเต้นของหัวใจเมื่อถึงเวลาฟังก์ชันนี้ยังคืนเวลาที่ผ่านไปและไม่มีอะไรอีก

หากสคริปต์ที่เรียกกำลังดำเนินการอยู่ในขั้นตอนการดําเนินการแบบเรียลไทม์ สคริปต์จะถูกระงับในขั้นตอนการดําเนินการแบบเรียลไทม์หากสคริปต์ที่เรียกกําลังดําเนินการอยู่ในขั้นตอนการดําเนินการแบบพาราเลลล์ สคริปต์จะถูกดําเนินการต่อในขั้นตอนการดําเนินการแบบพาราเลลล์สำหรับข้อมูลเพิ่มเติม ดู Luau แบบพาราเลล

พารามิเตอร์

duration: number

จํานวนเวลาในวินาทีที่ควรหมดลงก่อนที่กระทู้ปัจจุบันจะถูกดําเนินการต่อ

ค่าเริ่มต้น: 0

ส่งค่ากลับ

cancel

()

ยกเลิกกระทู้และปิดมัน ป้องกันไม่ให้มันถูกดำเนินการต่อไปโดยการกำหนดเวลาของเครื่องยนต์หรือโดยผู้ใช้โดยตรง

ฟังก์ชันนี้สามารถใช้ร่วมกับสมาชิกคนอื่นๆ ของไลบรารี งาน ที่ส่งกลับกระบวนท่าเพื่อยกเลิกก่อนที่จะถูกดำเนินการต่อ ตัวอย่างเช่น:


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

โปรดทราบว่ากระทู้อาจอยู่ในสถานะที่ไม่สามารถยกเลิกได้ตัวอย่างเช่น กระบวนการที่กําลังดําเนินการอยู่และกระบวนการที่ได้รับการดําเนินการใหม่อีกครั้งอาจไม่ถูกยกเลิกหากเป็นกรณีนี้ข้อผิดพลาดจะถูกสร้างขึ้นอย่างไรก็ตาม โค้ดไม่ควรพึ่งพาสถานะหรือเงื่อนไขกระทู้เฉพาะที่ทําให้ task.cancel() ล้มเหลวเป็นไปได้ว่าการอัปเดตในอนาคตจะลบข้อจํากัดเหล่านี้และอนุญาตให้การดําเนินการทางธ레ดในสถานะเหล่านี้สําเร็จได้

พารามิเตอร์

thread: coroutine

กระทู้ที่จะถูกยกเลิก

ส่งค่ากลับ

()