Assincronismo de tarefas no Gulp
Você deve entender que todas as tarefas do Gulp são assíncronas. O que isso significa? Vamos ver um exemplo. Suponha que dentro de uma tarefa pública duas tarefas privadas são chamadas:
function taskD(cb) {
task1(cb);
task2(cb);
cb();
}
Assincronismo significa que a tarefa task2
não irá aguardar a conclusão da execução da
tarefa task1, mas será executada
em paralelo com ela.
Vamos refletir sobre isso com um exemplo mais prático. Suponha que a primeira tarefa transforma LESS em CSS, e a segunda tarefa - minifica o CSS obtido.
Neste caso, enfrentaremos um problema: afinal, não é possível minificar o arquivo CSS antes que o resultado da compilação LESS seja inserido nele!
No entanto, se as tarefas fossem executadas de forma síncrona - sequencialmente, uma após a outra, enfrentaríamos outro problema: tarefas que poderiam ser executadas em paralelo, seriam executadas uma após a outra, retardando o trabalho do Gulp. Vamos também refletir sobre isso com um exemplo.
Suponha que a primeira tarefa minifica arquivos CSS, e a segunda tarefa - minifica arquivos JavaScript. Obviamente, estas duas operações não relacionadas podem ser executadas simultaneamente.
Felizmente, o Gulp fornece ferramentas que permitem indicar explicitamente quais tarefas devem ser executadas em paralelo e quais - sequencialmente. Essas ferramentas serão analisadas na próxima lição.
Pense em um exemplo de duas tarefas que devem ser executadas apenas sequencialmente.
Pense em um exemplo de duas tarefas que devem ser executadas apenas em paralelo.