ამოცანების ასინქრონულობა Gulp-ში

თქვენ უნდა გააცნობიეროთ, რომ ყველა Gulp-ის ამოცანა - ასინქრონულია. რას ნიშნავს ეს, მოდით შევხედოთ მაგალითს. დავუშვათ, რომ საჯარო ამოცანის შიგნით იძახება ორი პრივატული:

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

ასინქრონულობა ნიშნავს, რომ ამოცანა task2 არ ლოდება task1 ამოცანის შესრულების დასრულებას, არამედ შესრულდება მასთან პარალელურად.

მოდით, უფრო პრაქტულ მაგალითზე დავფიქრდეთ. დავუშვათ, პირველი ამოცანა აკონვერტირებს LESS-ს CSS-ში, ხოლო მეორე ამოცანა - მინიმიზირებს მიღებულ CSS-ს.

ამ შემთხვევაში, ჩვენ პრობლემას შევეჩეხებით: შეგიძლიათ CSS ფაილის მინიმიზაცია მანამ, სანამ მასში LESS-ის კომპილაციის შედეგი მოხვდება?!

თუმცა, თუ ამოცანები სინქრონულად შესრულდებოდა - თანმიმდევრულად ერთმანეთის მიყოლებით, ჩვენ სხვა პრობლემას შევეჩეხებოდით: ამოცანები, რომელთა პარალელურად შესრულებაც შეიძლება, შესრულდებოდნენ თანმიმდევრულად, რაც Gulp-ის მუშაობას შეანელებდა. მოდით ამაზეც მაგალითზე დავფიქრდეთ.

დავუშვათ, პირველი ამოცანა ამინიმიზირებს CSS ფაილებს, ხოლო მეორე ამოცანა - ამინიმიზირებს JavaScript ფაილებს. აშკარაა, რომ ეს ორი დაუკავშირებელი ოპერაცია შეიძლება შესრულდეს ერთდროულად.

საბედნიეროდ, Gulp გვაწვდის ინსტრუმენტებს, რომლებიც საშუალებას გვაძლევს მკაფიოდ მივუთითოთ, რომელი ამოცანები უნდა შესრულდეს პარალელურად, ხოლო რომელი - თანმიმდევრულად. ამ ინსტრუმენტებს შემდეგ გაკვეთილში განვიხილავთ.

Задание 1

მოიფიქრეთ მაგალითი ორი ამოცანის, რომლებიც მხოლოდ თანმიმდევრულად უნდა შესრულდეს.

Задание 2

მოიფიქრეთ მაგალითი ორი ამოცანის, რომლებიც მხოლოდ პარალელურად უნდა შესრულდეს.