Sincronizarea sarcinilor în Gulp
Ar trebui să înțelegeți că toate sarcinile Gulp - sunt asincrone. Ce înseamnă acest lucru, să privim un exemplu. Să presupunem că în interiorul unei sarcini publice sunt apelate două sarcini private:
function taskD(cb) {
task1(cb);
task2(cb);
cb();
}
Asincronicitatea înseamnă că sarcina task2
nu va aștepta finalizarea executării
sarcinii task1, ci se va executa
în paralel cu aceasta.
Să ne gândim la acest lucru printr-un exemplu mai practic. Să presupunem că prima sarcină transformă LESS în CSS, iar a doua sarcină - minimizează CSS-ul obținut.
În acest caz, ne vom confrunta cu o problemă: până la urmă, nu poți minimiza fișierul CSS înainte ca rezultatul compilării LESS să ajungă în el!
Cu toate acestea, dacă sarcinile s-ar executa sincron - succesiv una după alta, ne-am confrunta cu o altă problemă: sarcinile care pot fi efectuate în paralel, s-ar executa una după alta, încetinind funcționarea Gulp. Să ne gândim și la acest lucru printr-un exemplu.
Să presupunem că prima sarcină minimizează fișierele CSS, iar a doua sarcină - minimizează fișierele JavaScript. Evident, aceste două operații neconectate pot fi efectuate simultan.
Din fericire, Gulp oferă instrumente, care permit indicarea explicită a faptului că sarcini trebuie să fie executate în paralel, iar care - succesiv. Aceste instrumente le vom analiza în lecția următoare.
Gândiți-vă la un exemplu de două sarcini care trebuie să fie executate doar succesiv.
Gândiți-vă la un exemplu de două sarcini care trebuie să fie executate doar în paralel.