Gulp-ի առաջադրանքների ասինխրոնություն
Դուք պետք է հասկանաք, որ Gulp-ի բոլոր առաջադրանքները ասինխրոն են: Ինչ է սա նշանակում, եկեք նայենք օրինակով: Ենթադրենք հրապարակային առաջադրանքի ներսում կանչվում են երկու մասնավոր առաջադրանք.
function taskD(cb) {
task1(cb);
task2(cb);
cb();
}
Ասինխրոնությունը նշանակում է, որ task2
առաջադրանքը չի սպասի task1 առաջադրանքի
ավարտին, այլ կկատարվի դրան զուգահեռ:
Եկեք մտածենք դրա մասին ավելի գործնական օրինակով: Ենթադրենք առաջին առաջադրանքը փոխակերպում է LESS-ը CSS-ի, իսկ երկրորդ առաջադրանքը մինիմալացնում է ստացված CSS-ը:
Այդ դեպքում մենք կբախվենք խնդրի. քանի որ անհնար է մինիմալացնել CSS ֆայլը մինչև դրա մեջ կհայտնվի LESS-ի կոմպիլյացիայի արդյունքը:
Սակայն, եթե առաջադրանքները կատարվեին սինխրոն հերթականությամբ մեկը մյուսի հետևից, մենք կբախվեինք մեկ այլ խնդրի. այն առաջադրանքները, որոնք հնարավոր է կատարել զուգահեռ, կկատարվեին մեկը մյուսի հետևից, դանդաղեցնելով Gulp-ի աշխատանքը: Եկեք նաև դա մտածենք օրինակով:
Ենթադրենք առաջին առաջադրանքը մինիմալացնում է CSS ֆայլերը, իսկ երկրորդ առաջադրանքը մինիմալացնում է JavaScript ֆայլերը: Ակնհայտ է, որ այս երկու անկապ գործողությունները կարելի է կատարել միաժամանակ:
Բարեբախտաբար, Gulp-ը տրամադրում է գործիքներ, որոնք թույլ են տալիս հստակ նշել, թե որ առաջադրանքները պետք է կատարվեն զուգահեռ, և որոնք հերթականությամբ: Այդ գործիքները մենք կանդրադառնանք հաջորդ դասում:
Գտեք երկու առաջադրանքների օրինակ, որոնք պետք է կատարվեն միայն հերթականությամբ:
Գտեք երկու առաջադրանքների օրինակ, որոնք պետք է կատարվեն միայն զուգահեռ: