Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

วิธีแก้ไขข้อผิดพลาด Gulp: "The following tasks did not complete... Did you forget to signal async completion?"

เมื่อทำงานกับ Gulp คุณอาจพบข้อผิดพลาดนี้:

The following tasks did not complete... Did you forget to signal async completion?

สาเหตุคือ ใน Gulp 4 ทุก Task จะเป็น Asynchronous (ไม่พร้อมกัน) โดยอัตโนมัติ

ฟังก์ชัน Synchronous จะทำงานทีละอัน ต้องรอให้อันก่อนหน้าเสร็จก่อน จะเริ่มทำงานอันถัดไป ส่วนฟังก์ชัน Asynchronous สามารถเริ่มทำงานได้พร้อมกันขณะที่ยังรอผลลัพธ์จากฟังก์ชันก่อนหน้า

สิ่งนี้ทำให้กระบวนการมีประสิทธิภาพมากขึ้น เนื่องจากไม่ถูกบล็อก แต่เพื่อให้รู้ว่าฟังก์ชันไหนเสร็จแล้ว เราต้องมีการส่งสัญญาณ (signal) ว่าเสร็จสิ้นแล้ว โดยชัดเจน ฟังก์ชัน Gulp ส่วนใหญ่ เช่น src() หรือ dest() จะคืนค่าเป็น Node Stream ดังนั้นคุณไม่ต้องกังวลเรื่องนี้

อย่างไรก็ตาม หากคุณมีฟังก์ชันแบบกำหนดเองที่ไม่ได้คืนค่า Stream คุณต้องเพิ่ม Callback function ไว้ท้ายฟังก์ชันนั้น มิฉะนั้นคุณจะได้ข้อผิดพลาดดังกล่าว

เพื่อแก้ไขข้อผิดพลาด ให้เพิ่ม Callback function ตามตัวอย่างด้านล่าง:

function helloWorld(cb){ console.log('Hellooooo world!'); cb(); } 

ในฟังก์ชัน helloWorld นี้ เราเพิ่มพารามิเตอร์ cb (callback) แล้วเรียกใช้ cb() ที่ท้ายฟังก์ชัน การทำนี้จะส่งสัญญาณ async completion และควรจะแก้ไขข้อผิดพลาดได้

หากต้องการข้อมูลเชิงลึกเพิ่มเติมเกี่ยวกับการตั้งค่า Gulp โปรดดูคอร์สของผม: Gulp 4 for Beginners!