Асінхроннасць задач у Gulp
Вам варта разумець, што ўсе задачы Gulp - асінхронныя. Што гэта значыць, давайце паглядзім на прыкладзе. Хай унутры публічнай задачы выклікаюцца дзве прыватныя:
function taskD(cb) {
task1(cb);
task2(cb);
cb();
}
Асінхроннасць азначае, што задача task2
не будзе дажыдацца заканчэння выканання
задачы task1, а будзе выконвацца
паралельна з ёй.
Давайце абдумаем гэта на больш практычным прыкладзе. Хай першая задача пераўтварае LESS у CSS, а другая задача - мінімізуе атрыманы CSS.
У такім выпадку мы сутыкнемся з праблемай: бо нельга мінімізаваць CSS файл да таго, як у яго трапіць вынік кампіляцыі LESS!
Аднак, калі б задачы выконваліся сінхронна - паслядоўна адна за другой, мы сутыкнуліся б з іншай праблемай: задачы, якія можна выканаць паралельна, выконваліся б адна за другой, запавольваючы працу Gulp. Давайце таксама абдумаем гэта на прыкладзе.
Хай першая задача мінімізуе CSS файлы, а другая задача - мінімізуе JavaScript файлы. Відавоўчна, што гэтыя дзве не звязаныя аперацыі можна выконваць адначасова.
На шчасце, Gulp прадастаўляе інструменты, якія дазваляюць явна паказаць, якія задачы павінны быць выкананы паралельна, а якія - паслядоўна. Гэтыя інструменты мы разбярэм у наступным уроку.
Прыдумайце прыклад двух задач, якія павінны выконвацца толькі паслядоўна.
Прыдумайце прыклад двух задач, якія павінны выконвацца толькі паралельна.