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

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

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

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

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

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

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

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

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

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

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

← →
↑