Asynchroniczność zadań w Gulp

Należy rozumieć, że wszystkie zadania Gulp - są asynchroniczne. Co to oznacza, spójrzmy na przykład. Załóżmy, że wewnątrz zadania publicznego wywoływane są dwa zadania prywatne:

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

Asynchroniczność oznacza, że zadanie task2 nie będzie czekało na zakończenie wykonania zadania task1, a będzie wykonywane równolegle z nim.

Przeanalizujmy to na bardziej praktycznym przykładzie. Niech pierwsze zadanie przekształca LESS na CSS, a drugie zadanie - minimalizuje otrzymany CSS.

W takim przypadku napotkamy problem: przecież nie można zminimalizować pliku CSS zanim trafi do niego wynik kompilacji LESS!

Jednakże, gdyby zadania wykonywały się synchronicznie - sekwencyjnie jedno za drugim, napotkalibyśmy inny problem: zadania, które można wykonać równolegle, wykonywałyby się jedno za drugim, spowalniając pracę Gulp. Przeanalizujmy to również na przykładzie.

Niech pierwsze zadanie minimalizuje pliki CSS, a drugie zadanie - minimalizuje pliki JavaScript. Oczywiste jest, że te dwie niezwiązane operacje można wykonywać jednocześnie.

Na szczęście Gulp dostarcza narzędzia, pozwalające wyraźnie wskazać, które zadania mają być wykonane równolegle, a które - sekwencyjnie. Te narzędzia przeanalizujemy w następnej lekcji.

Задание 1

Wymyśl przykład dwóch zadań, które powinny wykonywać się tylko sekwencyjnie.

Задание 2

Wymyśl przykład dwóch zadań, które powinny wykonywać się tylko równolegle.