Asynkron hantering av uppgifter i Gulp
Det är viktigt att du förstår att alla Gulp-uppgifter är asynkrona. Vad detta betyder, låt oss titta på ett exempel. Antag att två privata uppgifter anropas inuti en publik uppgift:
function taskD(cb) {
task1(cb);
task2(cb);
cb();
}
Asynkronitet innebär att uppgiften task2
inte kommer att vänta på att
uppgiften task1 ska slutföras, utan kommer att köras
parallellt med den.
Låt oss fundera över detta med ett mer praktiskt exempel. Antag att den första uppgiften omvandlar LESS till CSS, och den andra uppgiften - minifierar den resulterande CSS:en.
I så fall kommer vi att stöta på ett problem: man kan ju inte minifiera CSS-filen innan resultatet av LESS-kompileringen har skickats till den!
Men om uppgifterna utfördes synkront - sekventiellt en efter en, skulle vi stöta på ett annat problem: uppgifter som kan utföras parallellt skulle då utföras en efter en, vilket skulle sakta ner Gulp. Låt oss också fundera över detta med ett exempel.
Antag att den första uppgiften minifierar CSS-filer, och den andra uppgiften - minifierar JavaScript- filer. Uppenbarligen kan dessa två orelaterade operationer utföras samtidigt.
Som tur är tillhandahåller Gulp verktyg som gör det möjligt att explicit ange vilka uppgifter som måste utföras parallellt och vilka som ska utföras sekventiellt. Dessa verktyg kommer vi att undersöka i nästa lektion.
Kom på ett exempel på två uppgifter som borde utföras endast sekventiellt.
Kom på ett exempel på två uppgifter som borde utföras endast parallellt.