Асинхроност задатака у Gulp
Треба да разумете да су сви задаци у Gulp - асинхрони. Шта то значи, погледајмо на примеру. Нека унутар јавног задатка буду позвана два приватна:
function taskD(cb) {
task1(cb);
task2(cb);
cb();
}
Асинхроност значи да задатак task2
неће чекати да се заврши извршавање
задатка task1, већ ће се извршавати
паралелно са њим.
Размислимо о овоме на практичнијем примеру. Нека први задатак претвори LESS у CSS, а други задатак - минимизира добијени CSS.
У том случају наићи ћемо на проблем: зар није немогуће минимизирати CSS фајл пре него што у њега дође резултат компајлирања LESS-а!
Међутим, да су задаци извршавани синхроно - редом један за другим, наишли бисмо на други проблем: задаци које можемо извршити паралелно, извршавали би се један за другим, успоравајући рад Gulp. Хајде да о овоме такође размислимо на примеру.
Нека први задатак минимизира CSS фајлове, а други задатак - минимизира JavaScript фајлове. Очигледно је да ове две неповезане операције можемо обавити истовремено.
Срећом, Gulp пружа алатке које нам дозвољавају да експлицитно означимо који задаци треба да буду извршени паралелно, а који - редом. Те алатке ћемо размотрити у следећој лекцији.
Смислите пример два задатка која би требало да се извршавају само редом.
Смислите пример два задатка која би требало да се извршавају само паралелно.