การทำงานแบบอะซิงโครนัสของงานใน Gulp

คุณควรเข้าใจว่าทุกงานของ Gulp - เป็นแบบอะซิงโครนัส นั่นหมายความว่าอะไร ลองดู จากตัวอย่าง สมมติภายในงานสาธารณะ มีการเรียกใช้งานงานส่วนตัวสองงาน:

javascriptfunction taskD(cb) {
  task1(cb);
  task2(cb);
  cb();
}

การทำงานแบบอะซิงโครนัสหมายความว่างาน task2 จะไม่รอให้การทำงานของงาน task1 สิ้นสุดลง แต่จะทำงาน ขนานไปกับมัน

ลองคิดถึงเรื่องนี้ด้วยตัวอย่าง ที่ปฏิบัติได้มากกว่า สมมติว่างานแรกแปลง LESS เป็น CSS และงานที่สอง - บีบอัด CSS ที่ได้ให้เล็กลง

ในกรณีนี้ เราจะเจอกับปัญหา: เพราะเราไม่สามารถบีบอัดไฟล์ CSS ก่อนที่ ผลลัพธ์การคอมไพล์ LESS จะเข้ามาในนั้นได้!

อย่างไรก็ตาม หากงานต่างๆ ทำงานแบบซิงโครนัส - ตามลำดับต่อกันไป เราจะเจอกับ ปัญหาอีกอย่าง: งานที่สามารถ ทำแบบขนานกันได้ จะถูกทำทีละงาน ทำให้การทำงานของ Gulp ช้าลง ลอง คิดถึงเรื่องนี้ด้วยตัวอย่างเช่นกัน

สมมติว่างานแรกบีบอัดไฟล์ CSS และงานที่สอง - บีบอัดไฟล์ JavaScript เห็นได้ชัดว่าการดำเนินการสองอย่างที่ไม่เกี่ยวข้องกันนี้สามารถทำพร้อมกันได้

โชคดีที่ Gulp มีเครื่องมือ ที่ช่วยให้เราระบุได้อย่างชัดเจนว่างานใดควร ทำงานแบบขนาน และงานใดควรทำงานแบบตามลำดับ เครื่องมือเหล่านี้เราจะวิเคราะห์ในบทเรียนถัดไป

Задание 1

ลองคิดตัวอย่างงานสองงานที่ควร ทำงานแบบตามลำดับเท่านั้น

Задание 2

ลองคิดตัวอย่างงานสองงานที่ควร ทำงานแบบขนานเท่านั้น