Asinkroniese take in Gulp
Jy moet verstaan dat alle Gulp-take - asinkronies is. Wat dit beteken, laat ons kyk na 'n voorbeeld. Kom ons sê twee private take word binne 'n publieke taak geskakel:
function taskD(cb) {
task1(cb);
task2(cb);
cb();
}
Asinkronisiteit beteken dat taak task2
nie sal wag vir die voltooiing van
taak task1 nie, maar eerder
parallel daarmee sal uitgevoer word.
Kom ons dink hieroor na aan die hand van 'n meer praktiese voorbeeld. Laat die eerste taak LESS omskakel na CSS, en die tweede taak - die verkrygde CSS minimaliseer.
In so 'n geval sal ons 'n probleem teëkom: aangesien jy nie die CSS-lêer kan minimaliseer voordat die resultaat van die LESS-kompilering daarin beland nie!
Maar, as take sinchronies uitgevoer sou word - een na die ander, sou ons 'n ander probleem teëkom: take wat parallel uitgevoer kon word, sou een na die ander uitgevoer word, wat Gulp se werk sou vertraag. Kom ons dink ook hieroor na aan die hand van 'n voorbeeld.
Laat die eerste taak CSS-lêers minimaliseer, en die tweede taak - JavaScript-lêers minimaliseer. Dit is duidelik dat hierdie twee onverwante operasies gelyktydig uitgevoer kan word.
Gelukkig bied Gulp instrumente wat ons toelaat om eksplisiet aan te dui watter take parallel uitgevoer moet word, en watter - opeenvolgend. Hierdie instrumente sal ons in die volgende les ontleed.
Bedenk 'n voorbeeld van twee take wat siegs opeenvolgend uitgevoer moet word.
Bedenk 'n voorbeeld van twee take wat siegs parallel uitgevoer moet word.