Isolate.run สำหรับย้ายงานอย่างรวดเร็ว
เรียกใช้ฟังก์ชันนอกไอโซเลตหลัก
Isolate.run สำหรับย้ายงานอย่างรวดเร็ว เป็นบทเรียน Dart Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Dart Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Dart Academy มีบทเรียนทั้งหมด 4 บทเรียน
ทางเข้าที่ง่ายดาย
การสร้างไอโซเลตด้วยตนเองมีรายละเอียดจุกจิกมาก Isolate.run เป็นวิธีที่ง่ายที่สุดในการย้ายงานหนักหนึ่งงานออกจากไอโซเลตหลัก 🚀
สิ่งที่เมธอดนี้ทำ
Isolate.run จะสร้างไอโซเลตใหม่ เรียกใช้ฟังก์ชันที่นั่น ส่งคืนผลลัพธ์ แล้วปิดไอโซเลตให้คุณโดยอัตโนมัติ
ส่งคืนฟิวเจอร์
เนื่องจากงานทำงานอยู่ที่อื่น Isolate.run จึงส่งฟิวเจอร์กลับมาให้คุณ คุณสามารถ await ฟิวเจอร์นั้นได้เช่นเดียวกับการเรียกใช้ async อื่น ๆ
Future<int> sumIt() => Isolate.run(() {
var total = 0;
for (var i = 0; i < 1000000; i++) total += i;
return total;
});รอผลลัพธ์
เรียกใช้เมธอดแล้ว await คำตอบ ไอโซเลตหลักจะว่างเพื่อทำให้ส่วนติดต่อผู้ใช้ทำงานได้ลื่นไหลขณะที่การคำนวณกำลังดำเนินอยู่
final result = await Isolate.run(heavyTask);
print(result);ส่งฟังก์ชันระดับบนสุด
งานที่คุณเรียกใช้ควรเป็นฟังก์ชัน ระดับบนสุด หรือฟังก์ชัน static หรือเป็นโคลเชอร์แบบเรียบง่าย วิธีนี้ช่วยให้ส่งงานไปยังไอโซเลตใหม่ได้อย่างปลอดภัย
จับค่าอย่างระมัดระวัง
ค่าทุกค่าที่โคลเชอร์ จับไว้ จะถูกคัดลอกไปยังไอโซเลตใหม่ ควรเก็บข้อมูลที่จับไว้ให้มีขนาดเล็กและไม่มีสิ่งที่ส่งไม่ได้ เช่น ซ็อกเก็ต
ส่งอินพุตเข้าไป
ต้องการอินพุตใช่หรือไม่ ให้จับค่าเหล่านั้นไว้ในโคลเชอร์หรือส่งผ่านเข้าไป Dart จะ คัดลอก ค่าเหล่านั้นข้ามไป ดังนั้นไอโซเลตจึงทำงานกับข้อมูลฉบับของตัวเอง
final big = await Isolate.run(() => parseJson(rawText));รับผลลัพธ์กลับมา
สิ่งใดก็ตามที่ฟังก์ชันส่งคืนจะกลายเป็น ค่าของฟิวเจอร์ และถูกคัดลอกกลับมายังไอโซเลตหลักโดยอัตโนมัติ
ข้อผิดพลาดส่งกลับขึ้นมา
หากงานโยนข้อผิดพลาด ฟิวเจอร์จะ ถูกปฏิเสธ ให้ครอบ await ด้วย try/catch เพื่อจัดการข้อผิดพลาดได้ตรงจุดที่คุณเรียกใช้งาน
try {
final r = await Isolate.run(risky);
} catch (e) {
print('failed: $e');
}ต้นทุนของการเริ่มต้น
ทุกครั้งที่ใช้ Isolate.run จะมีการสร้างและปิดไอโซเลตหนึ่งตัว การดำเนินการนี้มีต้นทุนแฝง จึงคุ้มค่าสำหรับงานที่หนักจริง ๆ ไม่ใช่งานขนาดเล็ก
เหมาะกับกรณีใด
เลือกใช้ Isolate.run เมื่อมีงานก้อนใหญ่ที่ทำงานได้ด้วยตัวเองเพียงงานเดียว หากต้องสื่อสารโต้ตอบกันอย่างต่อเนื่อง การใช้ไอโซเลตเต็มรูปแบบจะเหมาะกว่า
ตรวจสอบอย่างรวดเร็ว
Isolate.run ส่งอะไรกลับมาให้คุณ
ทบทวน
Isolate.run ย้ายฟังก์ชันหนักหนึ่งฟังก์ชันไปทำงาน รอ Future ของมัน คัดลอกผลลัพธ์กลับมา แล้วเก็บกวาดทรัพยากรให้เรียบร้อย เป็นวิธีที่ง่ายที่สุดในการทำงานแบบขนาน ✅
คำถามที่พบบ่อย
บทเรียน “Isolate.run สำหรับย้ายงานอย่างรวดเร็ว” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “Isolate.run สำหรับย้ายงานอย่างรวดเร็ว” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Dart Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Dart Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “Isolate.run สำหรับย้ายงานอย่างรวดเร็ว”
เรียกใช้ฟังก์ชันนอกไอโซเลตหลัก คุณปฏิบัติ Dart Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Dart Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Dart Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “Isolate.run สำหรับย้ายงานอย่างรวดเร็ว” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Dart Academy นี้ได้ไหม
ได้ บทเรียน Dart Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เหตุใดจึงใช้ Isolate แทนเธรด
- Isolate.run สำหรับย้ายงานอย่างรวดเร็ว
- การสร้างไอโซเลตและการส่งข้อความ
- งานคำนวณหนักโดยไม่ทำให้หน้าจอกระตุก