Gulp-ի առաջադրանքների ասինխրոնություն

Դուք պետք է հասկանաք, որ Gulp-ի բոլոր առաջադրանքները ասինխրոն են: Ինչ է սա նշանակում, եկեք նայենք օրինակով: Ենթադրենք հրապարակային առաջադրանքի ներսում կանչվում են երկու մասնավոր առաջադրանք.

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

Ասինխրոնությունը նշանակում է, որ task2 առաջադրանքը չի սպասի task1 առաջադրանքի ավարտին, այլ կկատարվի դրան զուգահեռ:

Եկեք մտածենք դրա մասին ավելի գործնական օրինակով: Ենթադրենք առաջին առաջադրանքը փոխակերպում է LESS-ը CSS-ի, իսկ երկրորդ առաջադրանքը մինիմալացնում է ստացված CSS-ը:

Այդ դեպքում մենք կբախվենք խնդրի. քանի որ անհնար է մինիմալացնել CSS ֆայլը մինչև դրա մեջ կհայտնվի LESS-ի կոմպիլյացիայի արդյունքը:

Սակայն, եթե առաջադրանքները կատարվեին սինխրոն հերթականությամբ մեկը մյուսի հետևից, մենք կբախվեինք մեկ այլ խնդրի. այն առաջադրանքները, որոնք հնարավոր է կատարել զուգահեռ, կկատարվեին մեկը մյուսի հետևից, դանդաղեցնելով Gulp-ի աշխատանքը: Եկեք նաև դա մտածենք օրինակով:

Ենթադրենք առաջին առաջադրանքը մինիմալացնում է CSS ֆայլերը, իսկ երկրորդ առաջադրանքը մինիմալացնում է JavaScript ֆայլերը: Ակնհայտ է, որ այս երկու անկապ գործողությունները կարելի է կատարել միաժամանակ:

Բարեբախտաբար, Gulp-ը տրամադրում է գործիքներ, որոնք թույլ են տալիս հստակ նշել, թե որ առաջադրանքները պետք է կատարվեն զուգահեռ, և որոնք հերթականությամբ: Այդ գործիքները մենք կանդրադառնանք հաջորդ դասում:

Задание 1

Գտեք երկու առաջադրանքների օրինակ, որոնք պետք է կատարվեն միայն հերթականությամբ:

Задание 2

Գտեք երկու առաջադրանքների օրինակ, որոնք պետք է կատարվեն միայն զուգահեռ: