Gulp-də Vəzifələrin Asinxronluğu
Başa düşməlisiniz ki, bütün Gulp vəzifələri - asinxrondur. Bunun nə demək olduğunu bir nümunə ilə nəzərdən keçirək. Tutaq ki, ictimai vəzifənin içərisində iki gizli vəzifə çağırılır:
function taskD(cb) {
task1(cb);
task2(cb);
cb();
}
Asinxronluq o deməkdir ki, task2 vəzifəsi
task1 vəzifəsinin bitməsini gözləməyəcək,
əksinə onunla paralel icra olunacaq.
Gəlin bunu daha praktiki bir nümunə ilə düşünək. Tutaq ki, birinci vəzifə LESS-i CSS-ə çevirir, ikinci vəzifə isə alınan CSS-i kiçildir (minify edir).
Belə bir halda biz problemlə qarşılaşarıq: axı CSS faylını, LESS-in kompilyasiya nəticəsi onun içinə düşməmişdən əvvəl kiçiltmək olmaz!
Ancaq, əgər vəzifələr sinxron şəkildə icra olunsaydı - ardıcıl olaraq biri digərindən sonra, biz başqa bir problemlə qarşılaşardıq: paralel icra oluna biləcək vəzifələr bir-birinin ardınca icra olunaraq Gulp-un işini ləngidərdi. Gəlin bunu da bir nümunə ilə düşünək.
Tutaq ki, birinci vəzifə CSS fayllarını kiçildir, ikinci vəzifə isə JavaScript fayllarını kiçildir. Aydındır ki, bu iki əlaqəsiz əməliyyatı eyni vaxtda yerinə yetirmək olar.
Xoşbəxtlikdən, Gulp, hansı vəzifələrin paralel, hansılarının isə ardıcıl icra olunması lazım olduğunu aydın şəkildə göstərməyə imkan verən alətlər təqdim edir. Bu alətləri növbəti dərsdə təhlil edəcəyik.
Yalnız ardıcıl olaraq icra olunmalı olan iki vəzifəyə nümunə tapın.
Yalnız paralel olaraq icra olunmalı olan iki vəzifəyə nümunə tapın.