A feladatok aszinkronitása a Gulp-ban
Érdemes megérteni, hogy minden Gulp feladat - aszinkron. Mit is jelent ez, nézzük meg egy példán keresztül. Tegyük fel, hogy egy nyilvános feladaton belül két privatív hívódik meg:
function taskD(cb) {
task1(cb);
task2(cb);
cb();
}
Az aszinkronitás azt jelenti, hogy a task2
feladat nem várja meg a task1
feladat befejeződését, hanem azzal párhuzamosan
fog futni.
Gondoljuk ezt át egy gyakorlatiasabb példán. Tegyük fel, hogy az első feladat a LESS-t CSS-sé alakítja, a második feladat pedig minimalizálja a kapott CSS-t.
Ebben az esetben problémába ütközünk: hiszen nem minimalizálhatjuk a CSS fájlt azelőtt, hogy a LESS kompilálásának eredménye belekerülne!
Azonban, ha a feladatok szinkronon futnának - egymás után, sorban, akkor egy másik problémával néznénk szembe: a párhuzamosan is végrehajtható feladatok egymás után futnának, lelassítva a Gulp munkáját. Gondoljuk ezt át egy példán keresztül.
Tegyük fel, hogy az első feladat minimalizálja a CSS fájlokat, a második feladat pedig minimalizálja a JavaScript fájlokat. Nyilvánvaló, hogy ez a két, egymással nem összefüggő művelet egyidejűleg is végrehajtható.
Szerencsére a Gulp olyan eszközöket kínál, amelyek lehetővé teszik, hogy kifejezetten megadjuk, mely feladatoknak kell párhuzamosan, és melyeknek - sorban végrehajtódniuk. Ezeket az eszközöket a következő leckében vesszük figyelembe.
Találj ki egy példát két olyan feladatra, amelyeknek csak sorban kell végrehajtódniuk.
Találj ki egy példát két olyan feladatra, amelyeknek csak párhuzamosan kell végrehajtódniuk.