การทำงานแบบอะซิงโครนัสของงานใน Gulp
คุณควรเข้าใจว่าทุกงานของ Gulp - เป็นแบบอะซิงโครนัส นั่นหมายความว่าอะไร ลองดู จากตัวอย่าง สมมติภายในงานสาธารณะ มีการเรียกใช้งานงานส่วนตัวสองงาน:
function taskD(cb) {
task1(cb);
task2(cb);
cb();
}
การทำงานแบบอะซิงโครนัสหมายความว่างาน task2
จะไม่รอให้การทำงานของงาน
task1 สิ้นสุดลง แต่จะทำงาน
ขนานไปกับมัน
ลองคิดถึงเรื่องนี้ด้วยตัวอย่าง ที่ปฏิบัติได้มากกว่า สมมติว่างานแรกแปลง LESS เป็น CSS และงานที่สอง - บีบอัด CSS ที่ได้ให้เล็กลง
ในกรณีนี้ เราจะเจอกับปัญหา: เพราะเราไม่สามารถบีบอัดไฟล์ CSS ก่อนที่ ผลลัพธ์การคอมไพล์ LESS จะเข้ามาในนั้นได้!
อย่างไรก็ตาม หากงานต่างๆ ทำงานแบบซิงโครนัส - ตามลำดับต่อกันไป เราจะเจอกับ ปัญหาอีกอย่าง: งานที่สามารถ ทำแบบขนานกันได้ จะถูกทำทีละงาน ทำให้การทำงานของ Gulp ช้าลง ลอง คิดถึงเรื่องนี้ด้วยตัวอย่างเช่นกัน
สมมติว่างานแรกบีบอัดไฟล์ CSS และงานที่สอง - บีบอัดไฟล์ JavaScript เห็นได้ชัดว่าการดำเนินการสองอย่างที่ไม่เกี่ยวข้องกันนี้สามารถทำพร้อมกันได้
โชคดีที่ Gulp มีเครื่องมือ ที่ช่วยให้เราระบุได้อย่างชัดเจนว่างานใดควร ทำงานแบบขนาน และงานใดควรทำงานแบบตามลำดับ เครื่องมือเหล่านี้เราจะวิเคราะห์ในบทเรียนถัดไป
ลองคิดตัวอย่างงานสองงานที่ควร ทำงานแบบตามลำดับเท่านั้น
ลองคิดตัวอย่างงานสองงานที่ควร ทำงานแบบขนานเท่านั้น