เมื่อทำงานใน Gulp คุณอาจพบข้อผิดพลาดนี้:
The following tasks did not complete... Did you forget to signal async completion?
มีสาเหตุมาจากในอึก 4 งานทั้งหมดจะไม่ตรงกันโดยอัตโนมัติ
ฟังก์ชันซิงโครนัสจะทำงานทีละอย่าง และแต่ละฟังก์ชันต้องรอจนกว่าฟังก์ชันก่อนหน้าจะเสร็จสมบูรณ์ก่อนที่จะทำงาน ในทางกลับกัน ฟังก์ชันอะซิงโครนัสสามารถเริ่มทำงานได้ในขณะที่ยังคงรอผลของฟังก์ชันก่อนหน้า
ทำให้กระบวนการมีประสิทธิภาพมากขึ้นเนื่องจากไม่ถูกบล็อก แต่เพื่อที่จะทราบว่าฟังก์ชันเสร็จสิ้นเมื่อใด เราต้องการให้ฟังก์ชันดังกล่าวส่งคืนตัวระบุอย่างชัดเจนว่าเสร็จสิ้นแล้ว งานอึกส่วนใหญ่เช่น src()
หรือ dest()
จะส่งคืน Node stream ดังนั้นคุณไม่ต้องกังวลกับมัน
อย่างไรก็ตาม หากคุณมีฟังก์ชันแบบกำหนดเองที่ไม่ส่งคืนสตรีม คุณจะต้องเพิ่มฟังก์ชันเรียกกลับที่ส่วนท้าย มิฉะนั้น คุณจะได้รับข้อความแสดงข้อผิดพลาดนั้น
ในการแก้ไขข้อผิดพลาด คุณจะต้องเพิ่มฟังก์ชันเรียกกลับดังตัวอย่างนี้:
function helloWorld(cb){
console.log('Hellooooo world!');
cb();
}
ใน helloWorld
. นี้ ฟังก์ชัน เราได้เพิ่ม cb()
ฟังก์ชันเรียกกลับที่เราตั้งค่าเป็นพารามิเตอร์แล้วเรียกใช้เมื่อสิ้นสุดฟังก์ชัน การเพิ่มข้อมูลนี้จะส่งสัญญาณว่า async เสร็จสมบูรณ์ และควรแก้ไขข้อผิดพลาดที่เกิดขึ้น
หากคุณต้องการข้อมูลเชิงลึกเพิ่มเติมเกี่ยวกับวิธีการตั้งค่าอึก ลองดูหลักสูตรของฉัน Gulp 4 สำหรับผู้เริ่มต้น!