Asynchronnost úloh v Gulp
Měli byste chápat, že všechny úlohy Gulp - jsou asynchronní. Co to znamená, podívejme se na příkladu. Nechť uvnitř veřejné úlohy jsou volány dvě privátní:
function taskD(cb) {
task1(cb);
task2(cb);
cb();
}
Asynchronnost znamená, že úloha task2
nebude čekat na dokončení provedení
úlohy task1, ale bude se provádět
souběžně s ní.
Pojďme to promyslet na praktičtějším příkladu. Nechť první úloha převádí LESS na CSS, a druhá úloha - minimalizuje výsledné CSS.
V takovém případě narazíme na problém: vždyť nelze minimalizovat CSS soubor dříve, než do něj přijde výsledek kompilace LESS!
Avšak, pokud by se úlohy prováděly synchronně - postupně jedna za druhou, narazili bychom na jiný problém: úlohy, které je možné provést paralelně, by se prováděly jedna za druhou, čímž by se zpomalovala práce Gulp. Pojďme si to také promyslet na příkladu.
Nechť první úloha minimalizuje CSS soubory, a druhá úloha - minimalizuje JavaScriptové soubory. Je zřejmé, že tyto dvě nesouvisející operace lze provádět současně.
Naštěstí, Gulp poskytuje nástroje, které umožňují explicitně určit, které úlohy mají být provedeny paralelně, a které - postupně. Tyto nástroje si probereme v příští lekci.
Vymyslete příklad dvou úloh, které by měly být provedeny pouze postupně.
Vymyslete příklad dvou úloh, které by měly být provedeny pouze paralelně.