Tính bất đồng bộ của tác vụ trong Gulp
Bạn cần hiểu rằng tất cả các tác vụ Gulp đều là bất đồng bộ. Điều này có nghĩa là gì, hãy cùng xem qua một ví dụ. Giả sử bên trong một tác vụ công khai có gọi hai tác vụ riêng tư:
function taskD(cb) {
task1(cb);
task2(cb);
cb();
}
Tính bất đồng bộ có nghĩa là tác vụ task2
sẽ không chờ đến khi tác vụ task1 hoàn thành
mà sẽ thực thi
song song với nó.
Hãy cùng suy nghĩ về điều này với một ví dụ thực tế hơn. Giả sử tác vụ đầu tiên chuyển đổi LESS thành CSS, và tác vụ thứ hai - tối giản hóa CSS thu được.
Trong trường hợp như vậy, chúng ta sẽ gặp phải vấn đề: vì không thể tối giản hóa file CSS trước khi kết quả biên dịch LESS được đưa vào nó!
Tuy nhiên, nếu các tác vụ được thực thi đồng bộ - tuần tự một cái sau một cái, chúng ta sẽ gặp phải một vấn đề khác: những tác vụ có thể thực hiện song song, lại được thực thi lần lượt, làm chậm hoạt động của Gulp. Hãy cùng suy nghĩ về điều này qua một ví dụ.
Giả sử tác vụ đầu tiên tối giản hóa các file CSS, còn tác vụ thứ hai - tối giản hóa các file JavaScript. Rõ ràng là hai thao tác không liên quan này có thể được thực hiện đồng thời.
May mắn thay, Gulp cung cấp các công cụ cho phép chỉ định rõ ràng tác vụ nào nên được thực thi song song, tác vụ nào - tuần tự. Chúng ta sẽ phân tích các công cụ này trong bài học tiếp theo.
Hãy nghĩ ra một ví dụ về hai tác vụ mà bắt buộc phải được thực thi chỉ theo thứ tự tuần tự.
Hãy nghĩ ra một ví dụ về hai tác vụ mà bắt buộc phải được thực thi chỉ song song.