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:

javascriptfunction 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.

Задание 1

Gândiți-vă la un exemplu de două sarcini care trebuie să fie executate doar succesiv.

Задание 2

Gândiți-vă la un exemplu de două sarcini care trebuie să fie executate doar în paralel.