2014-09-27 16 views
38

Trong các ví dụ trực tuyến cho thấy việc sử dụng gulp, một số tác vụ trả về luồng và một số tác vụ khác không trả về.Nhiệm vụ gulp có phải trả lại bất kỳ thứ gì không?

Ví dụ, mà không có một sự trở lại:

gulp.task('tsc', function() 
{ 
    gulp.src('**/*.ts') 
     // ... 
}); 

Và cùng mã, với sự trở lại:

gulp.task('tsc', function() 
{ 
    return gulp.src('**/*.ts') 
     // ... 
}); 

Có cần phải trả lại dòng?

Trả lời

35

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.

+7

Đ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

+1

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 –

Các vấn đề liên quan