Асінхроннасць задач у Gulp

Вам варта разумець, што ўсе задачы Gulp - асінхронныя. Што гэта значыць, давайце паглядзім на прыкладзе. Хай унутры публічнай задачы выклікаюцца дзве прыватныя:

javascriptfunction taskD(cb) {
  task1(cb);
  task2(cb);
  cb();
}

Асінхроннасць азначае, што задача task2 не будзе дажыдацца заканчэння выканання задачы task1, а будзе выконвацца паралельна з ёй.

Давайце абдумаем гэта на больш практычным прыкладзе. Хай першая задача пераўтварае LESS у CSS, а другая задача - мінімізуе атрыманы CSS.

У такім выпадку мы сутыкнемся з праблемай: бо нельга мінімізаваць CSS файл да таго, як у яго трапіць вынік кампіляцыі LESS!

Аднак, калі б задачы выконваліся сінхронна - паслядоўна адна за другой, мы сутыкнуліся б з іншай праблемай: задачы, якія можна выканаць паралельна, выконваліся б адна за другой, запавольваючы працу Gulp. Давайце таксама абдумаем гэта на прыкладзе.

Хай першая задача мінімізуе CSS файлы, а другая задача - мінімізуе JavaScript файлы. Відавоўчна, што гэтыя дзве не звязаныя аперацыі можна выконваць адначасова.

На шчасце, Gulp прадастаўляе інструменты, якія дазваляюць явна паказаць, якія задачы павінны быць выкананы паралельна, а якія - паслядоўна. Гэтыя інструменты мы разбярэм у наступным уроку.

Задание 1

Прыдумайце прыклад двух задач, якія павінны выконвацца толькі паслядоўна.

Задание 2

Прыдумайце прыклад двух задач, якія павінны выконвацца толькі паралельна.