Ασυγχρονισμός Εργασιών στο Gulp
Θα πρέπει να κατανοήσετε ότι όλες οι εργασίες του Gulp - είναι ασύγχρονες. Ας δούμε τι σημαίνει αυτό με ένα παράδειγμα. Ας υποθέσουμε ότι μέσα σε μια δημόσια εργασία καλούνται δύο ιδιωτικές:
function taskD(cb) {
task1(cb);
task2(cb);
cb();
}
Ο ασυγχρονισμός σημαίνει ότι η εργασία task2
δεν θα περιμένει να ολοκληρωθεί η εκτέλεση
της εργασίας task1, αλλά θα εκτελείται
παράλληλα με αυτήν.
Ας το σκεφτούμε με ένα πιο πρακτικό παράδειγμα. Ας υποθέσουμε ότι η πρώτη εργασία μετασχηματίζει LESS σε CSS, και η δεύτερη εργασία - ελαχιστοποιεί το προκύπτον CSS.
Σε αυτήν την περίπτωση, θα αντιμετωπίσουμε ένα πρόβλημα: εξάλλου, δεν μπορούμε να ελαχιστοποιήσουμε το αρχείο CSS πριν να λάβει τα αποτελέσματα της μεταγλώττισης του LESS!
Ωστόσο, εάν οι εργασίες εκτελούνταν συγχρόνως - διαδοχικά η μία μετά την άλλη, θα αντιμετωπίζαμε ένα άλλο πρόβλημα: εργασίες που θα μπορούσαν να εκτελεστούν παράλληλα, θα εκτελούνταν η μία μετά την άλλη, επιβραδύνοντας τη λειτουργία του Gulp. Ας το σκεφτούμε και αυτό με ένα παράδειγμα.
Ας υποθέσουμε ότι η πρώτη εργασία ελαχιστοποιεί τα αρχεία CSS, και η δεύτερη εργασία - ελαχιστοποιεί τα αρχεία JavaScript. Προφανώς, αυτές οι δύο ασύνδετες πράξεις μπορούν να εκτελεστούν ταυτόχρονα.
Ευτυχώς, το Gulp παρέχει εργαλεία, που επιτρέπουν να καθορίσουμε ρητά ποιες εργασίες πρέπει να εκτελεστούν παράλληλα και ποιες - διαδοχικά. Αυτά τα εργαλεία θα τα αναλύσουμε στο επόμενο μάθημα.
Σκεφτείτε ένα παράδειγμα δύο εργασιών που πρέπει να εκτελούνται μόνο διαδοχικά.
Σκεφτείτε ένα παράδειγμα δύο εργασιών που πρέπει να εκτελούνται μόνο παράλληλα.