0Pricing
Dart Academy · บทเรียน

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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เหตุใดจึงใช้ Isolate แทนเธรด
  2. Isolate.run สำหรับย้ายงานอย่างรวดเร็ว
  3. การสร้างไอโซเลตและการส่งข้อความ
  4. งานคำนวณหนักโดยไม่ทำให้หน้าจอกระตุก
← กลับไปที่ Dart Academy