Асинхронност на задачите в Gulp
Трябва да разбирате, че всички задачи в Gulp - са асинхронни. Какво означава това, нека да видим с пример. Нека във вътрешна публична задача да се извикват две приватни:
function taskD(cb) {
task1(cb);
task2(cb);
cb();
}
Асинхронността означава, че задачата task2
няма да изчаква приключването на изпълнението
на задачата task1, а ще се изпълнява
паралелно с нея.
Нека да обмислим това с по-практичен пример. Нека първата задача преобразува LESS в CSS, а втората задача - минимизира получения CSS.
В такъв случай ще се сблъскаме с проблем: все пак не може да се минимизира CSS файл преди в него да е попаднал резултатът от компилацията на LESS!
Въпреки това, ако задачите се изпълняваха синхронно - последователно една след друга, ще се сблъскаме с друг проблем: задачи, които могат да бъдат изпълнени паралелно, ще се изпълняват една след друга, забавяйки работата на Gulp. Нека също да обмислим това с пример.
Нека първата задача минимизира CSS файлове, а втората задача - минимизира JavaScript файлове. Очевидно е, че тези две несвързани операции могат да се изпълняват едновременно.
За щастие, Gulp предоставя инструменти, позволяващи изрично да се укаже кои задачи трябва да бъдат изпълнени паралелно, а кои - последователно. Тези инструменти ще разгледаме в следващия урок.
Измислете пример за две задачи, които трябва да се изпълняват само последователно.
Измислете пример за две задачи, които трябва да се изпълняват само паралелно.