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:

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

Задание 1

Sugalvokite pavyzdį dviejų užduočių, kurios turėtų būti vykdomos tik nuosekliai.

Задание 2

Sugalvokite pavyzdį dviejų užduočių, kurios turėtų būti vykdomos tik lygiagrečiai.