Užduočių asinchroniškumas Gulp
Jūs turėtumėte suprasti, kad visos Gulp užduotys - yra asinchroniškos. Ką tai reiškia, pažiūrėkime pavyzdžiu. Tarkime, viešosios užduoties viduje iškviečiamos dvi privačios:
function taskD(cb) {
task1(cb);
task2(cb);
cb();
}
Asinchroniškumas reiškia, kad užduotis task2
nelauks, kol baigsis vykdymas
užduoties task1, o bus vykdoma
lygiagrečiai su ja.
Apgalvokime tai praktiškesniu pavyzdžiu. Tarkime, pirmoji užduotis paverčia LESS į CSS, o antroji užduotis - minimizuoja gautą CSS.
Tokiu atveju mes susidursime su problema: juk negalima minimizuoti CSS failo prieš tai, kaip į jį pateks LESS kompiliavimo rezultatas!
Tačiau, jei užduotys būtų vykdomos sinchroniškai - nuosekliai viena po kitos, mes susidurtume su kita problema: užduotys, kurias galima vykdyti lygiagrečiai, būtų vykdomos viena po kitos, sulėtindamos Gulp veikimą. Apgalvokime tai taip pat pavyzdžiu.
Tarkime, pirmoji užduotis minimizuoja CSS failus, o antroji užduotis - minimizuoja JavaScript failus. Akivaizdu, kad šias dvi nesusijusias operacijas galima vykdyti vienu metu.
Laimei, Gulp suteikia įrankius, leidžiančius aiškiai nurodyti, kurios užduotys turi būti vykdomos lygiagrečiai, o kurios - nuosekliai. Šiuos įrankius išnagrinėsime kitoje pamokoje.
Sugalvokite pavyzdį dviejų užduočių, kurios turėtų būti vykdomos tik nuosekliai.
Sugalvokite pavyzdį dviejų užduočių, kurios turėtų būti vykdomos tik lygiagrečiai.