Asinhronost zadataka u Gulp
Trebalo bi da razumete da su svi zadaci u Gulpu - asinhroni. Šta to znači, pogledajmo na primeru. Neka unutar javnog zadatka budu pozvana dva privatna:
function taskD(cb) {
task1(cb);
task2(cb);
cb();
}
Asinhronost znači da zadatak task2
neće čekati da se izvrši
zadatak task1, već će se izvršavati
paralelno sa njim.
Razmotrimo ovo na praktičnijem primeru. Neka prvi zadatak pretvara LESS u CSS, a drugi zadatak - minimizuje dobijeni CSS.
U tom slučaju, suočićemo se sa problemom: zar se ne može minimizovati CSS fajl pre nego što u njega uđe rezultat kompilacije LESS-a!
Međutim, da su se zadaci izvršavali sinhrono - jedan za drugim, suočili bismo se sa drugim problemom: zadaci koji se mogu izvršiti paralelno, izvršavali bi se jedan za drugim, usporavajući rad Gulpa. Hajde da ovo takođe razmotrimo na primeru.
Neka prvi zadatak minimizuje CSS fajlove, a drugi zadatak - minimizuje JavaScript fajlove. Očigledno je da se ove dve nepovezane operacije mogu izvršavati istovremeno.
Srećom, Gulp pruža alate koji omogućavaju da se eksplicitno naznači koji zadaci moraju biti izvršeni paralelno, a koji - uzastopno. Ove alate ćemo razmotriti u sledećoj lekciji.
Smislite primer dva zadatka koji bi trebalo da se izvršavaju samo uzastopno.
Smislite primer dva zadatka koji bi trebalo da se izvršavaju samo paralelno.