Nếu bạn không trả lại luồng, kết quả không đồng bộ của mỗi tác vụ sẽ không được người gọi của nó chờ đợi, cũng như không phải bất kỳ tác vụ phụ thuộc nào.
Ví dụ, khi không trở về suối:
$ gulp scripts
[21:25:05] Using gulpfile ~/my-project/gulpfile.js
[21:25:05] Starting 'tsc'...
[21:25:05] Finished 'tsc' after 13 ms
[21:25:05] Starting 'scripts'...
[21:25:05] Finished 'scripts' after 10 ms
[21:25:05] Compiling TypeScript files using tsc version 1.0.1.0
Lưu ý ở đây rằng nhiệm vụ scripts
phụ thuộc vào nhiệm vụ tsc
. Nó báo cáo rằng tsc
hoàn thành trong 13 mili giây, mà chắc chắn là quá nhanh để được tin tưởng hợp lý. Sau đó, tác vụ scripts
xuất hiện để bắt đầu và hoàn thành, một lần nữa trong một khoảng thời gian rất ngắn. Cuối cùng, hoạt động thực tế được thực hiện bởi tsc
bắt đầu. Rõ ràng không phải tsc
cũng không phải scripts
đợi bước biên dịch hoàn thành.
Khi những nhiệm vụ trở lại suối của họ, kết quả trông khá khác nhau:
$ gulp scripts
[21:42:25] Using gulpfile ~/my-project/gulpfile.js
[21:42:25] Starting 'tsc'...
[21:42:25] Compiling TypeScript files using tsc version 1.0.1.0
[21:42:32] Finished 'tsc' after 6.65 s
[21:42:32] Starting 'scripts'...
[21:42:32] Finished 'scripts' after 204 ms
Đây là chuỗi có ý nghĩa, và khoảng thời gian báo cáo đáp ứng sự mong đợi.
Nguồn
2014-09-27 20:53:32
Điều gì sẽ xảy ra nếu bạn có tác vụ gulp không đồng bộ nhưng không liên quan đến luồng? Bạn có thể gọi hàm 'done()' hay trả lời một lời hứa không? – Bill
Bạn có thể xác định tác vụ sao cho nó chấp nhận hàm gọi lại làm tham số cuối cùng hoặc bạn có thể trả lời lời hứa. Xem tại đây: https://github.com/gulpjs/gulp/blob/v3.9.1/docs/API.md#gulptaskname--deps-fn –