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

แก้ไขข้อผิดพลาด Gulp อย่างรวดเร็ว:“งานต่อไปนี้ไม่เสร็จสมบูรณ์… คุณลืมส่งสัญญาณให้ async เสร็จสมบูรณ์หรือไม่”

เมื่อทำงานใน 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 สำหรับผู้เริ่มต้น!