ამოცანების ასინქრონულობა Gulp-ში
თქვენ უნდა გააცნობიეროთ, რომ ყველა Gulp-ის ამოცანა - ასინქრონულია. რას ნიშნავს ეს, მოდით შევხედოთ მაგალითს. დავუშვათ, რომ საჯარო ამოცანის შიგნით იძახება ორი პრივატული:
function taskD(cb) {
task1(cb);
task2(cb);
cb();
}
ასინქრონულობა ნიშნავს, რომ ამოცანა task2
არ ლოდება task1 ამოცანის შესრულების დასრულებას,
არამედ შესრულდება მასთან პარალელურად.
მოდით, უფრო პრაქტულ მაგალითზე დავფიქრდეთ. დავუშვათ, პირველი ამოცანა აკონვერტირებს LESS-ს CSS-ში, ხოლო მეორე ამოცანა - მინიმიზირებს მიღებულ CSS-ს.
ამ შემთხვევაში, ჩვენ პრობლემას შევეჩეხებით: შეგიძლიათ CSS ფაილის მინიმიზაცია მანამ, სანამ მასში LESS-ის კომპილაციის შედეგი მოხვდება?!
თუმცა, თუ ამოცანები სინქრონულად შესრულდებოდა - თანმიმდევრულად ერთმანეთის მიყოლებით, ჩვენ სხვა პრობლემას შევეჩეხებოდით: ამოცანები, რომელთა პარალელურად შესრულებაც შეიძლება, შესრულდებოდნენ თანმიმდევრულად, რაც Gulp-ის მუშაობას შეანელებდა. მოდით ამაზეც მაგალითზე დავფიქრდეთ.
დავუშვათ, პირველი ამოცანა ამინიმიზირებს CSS ფაილებს, ხოლო მეორე ამოცანა - ამინიმიზირებს JavaScript ფაილებს. აშკარაა, რომ ეს ორი დაუკავშირებელი ოპერაცია შეიძლება შესრულდეს ერთდროულად.
საბედნიეროდ, Gulp გვაწვდის ინსტრუმენტებს, რომლებიც საშუალებას გვაძლევს მკაფიოდ მივუთითოთ, რომელი ამოცანები უნდა შესრულდეს პარალელურად, ხოლო რომელი - თანმიმდევრულად. ამ ინსტრუმენტებს შემდეგ გაკვეთილში განვიხილავთ.
მოიფიქრეთ მაგალითი ორი ამოცანის, რომლებიც მხოლოდ თანმიმდევრულად უნდა შესრულდეს.
მოიფიქრეთ მაგალითი ორი ამოცანის, რომლებიც მხოლოდ პარალელურად უნდა შესრულდეს.