Асинхронность задач в Gulp

Вам следует понимать, что все задачи Gulp - асинхронны. Что это значит, давайте посмотрим на примере. Пусть внутри публичной задачи вызываются две приватных:

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

Асинхронность означает, что задача task2 не будет дожидаться окончания выполнения задачи task1, а будет выполняться параллельно с ней.

Давайте обдумаем это на более практическом примере. Пусть первая задача преобразует LESS в CSS, а вторая задача - минимизирует полученный CSS.

В таком случае мы столкнемся с проблемой: ведь нельзя минимизировать CSS файл до того, как в него попадет результат компиляции LESS!

Однако, если бы задачи выполнялись синхронно - последовательно одна за другой, мы столкнулись с другой проблемой: задачи, которые можно выполнить параллельно, выполнялись бы одна за другой, замедляя работу Gulp. Давайте также обдумаем это на примере.

Пусть первая задача минимизирует CSS файлы, а вторая задача - минимизирует JavaScript файлы. Очевидно, что эти две не связанные операции можно выполнять одновременно.

К счастью, Gulp предоставляет инструменты, позволяющие явно указать, какие задачи должны быть выполнены параллельно, а какие - последовательно. Эти инструменты мы разберем в следующем уроке.

Задание 1

Придумайте пример двух задач, которые должны выполняться только последовательно.

Задание 2

Придумайте пример двух задач, которые должны выполняться только параллельно.