Asinkronizimi i Detyrave në Gulp
Duhet të kuptoni se të gjitha detyrat në Gulp janë asinkrone. Çfarë do të thotë kjo, le ta shohim me një shembull. Supozoni se brenda një detyre publike thirren dy detyra private:
function taskD(cb) {
task1(cb);
task2(cb);
cb();
}
Asinkronizimi do të thotë se detyra task2
nuk do të presë përfundimin e ekzekutimit të
detyrës task1, por do të ekzekutohet
paralelisht me të.
Le ta mendojmë këtë me një shembull më praktik. Supozoni se detyra e parë konverton LESS në CSS, dhe detyra e dytë - minimizon CSS-në e përftuar.
Në këtë rast do të përballemi me një problem: sepse nuk mund të minimizohet skedari CSS para se të ketë rezultatet e kompilimit nga LESS!
Megjithatë, nëse detyrat do të ekzekutoheshin në mënyrë sinkrone - njëra pas tjetrës, do të përballemi me një problem tjetër: detyrat që mund të ekzekutohen paralelisht, do të ekzekutoheshin njëra pas tjetrës, duke ngadalësuar punën e Gulp. Le ta mendojmë këtë gjithashtu me një shembull.
Supozoni se detyra e parë minimizon skedarët CSS, dhe detyra e dytë - minimizon skedarët JavaScript. Është e qartë se këto dy operacione të palidhura mund të kryhen njëkohësisht.
Për fat të mirë, Gulp ofron mjete që lejojnë që të tregohet në mënyrë eksplicite, se cilat detyra duhet të ekzekutohen paralelisht, dhe cilat - në mënyrë sekuenciale. Këto mjete do t'i shqyrtojmë në mësimin e ardhshëm.
Gjeni një shembull të dy detyrave që duhet të ekzekutohen vetëm në mënyrë sekuenciale.
Gjeni një shembull të dy detyrave që duhet të ekzekutohen vetëm paralelisht.