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

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

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

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

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

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

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

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

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

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

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