Một nhiệm vụ trong ngụm thể được định nghĩa như sau:gulp: chức năng gọi lại nhiệm vụ gulp được định nghĩa ở đâu?
gulp.task('foobar', function(callback) { ... });
Tôi đang cố gắng để hiểu những gì các hàm callback là. Nó được định nghĩa ở đâu? Tôi có thể vượt qua trong một số chức năng khác như một đối số trong thời gian chạy không? Nó làm gì?
These docs cho biết đối số gọi lại là gợi ý cho Người phối hợp rằng tác vụ sẽ được chạy không đồng bộ, nơi thực thi cuộc gọi lại cho biết rằng tác vụ async đã hoàn tất.
Với một số thí nghiệm có vẻ như cách gọi callback không có đối số trả về một nhà nước thành công, và gọi đó là với một số chuỗi ném một lỗi:
gulp.task('foobar', function(callback) {
callback();
});
gulp.task('bazkad', function(callback) {
callback("some string");
});
(dành: làm thế nào để tôi đặt một break giữa khối mã ? trong StackOverflow markdown)
$ gulp foobar
[09:59:54] Using gulpfile ~\repos\gulpproj\gulpfile.js
[09:59:54] Starting 'foobar'...
[09:59:54] Finished 'foobar' after 56 μs
$ gulp bazkad
[10:05:49] Using gulpfile ~\repos\gulpproj\gulpfile.js
[10:05:49] Starting 'bazkad'...
[10:05:49] 'bazkad' errored after 55 μs
[10:05:49] Error: some string
at formatError (~\AppData\Roaming\npm\node_modules\gulp\bin\gulp.js:169:10)
at Gulp.<anonymous> (~\AppData\Roaming\npm\node_modules\gulp\bin\gulp.js:195:15)
at Gulp.emit (events.js:107:17)
at Gulp.Orchestrator._emitTaskDone (~\repos\gulpproj\node_modules\gulp\node_modules\orchestrator\index.js:264:8)
at ~\repos\gulpproj\node_modules\gulp\node_modules\orchestrator\index.js:275:23
at finish (~\repos\gulpproj\node_modules\gulp\node_modules\orchestrator\lib\runTask.js:21:8)
at cb (~\repos\gulpproj\node_modules\gulp\node_modules\orchestrator\lib\runTask.js:29:3)
at Gulp.<anonymous> (~\repos\gulpproj\gulpfile.js:35:5)
at module.exports (~\repos\gulpproj\node_modules\gulp\node_modules\orchestrator\lib\runTask.js:34:7)
at Gulp.Orchestrator._runTask (~\repos\gulpproj\node_modules\gulp\node_modules\orchestrator\index.js:273:3)
Vì vậy, câu hỏi tôi đã bao gồm:
- Is đây là chức năng duy nhất của cuộc gọi lại, để đưa ra một ngoại lệ nếu thông qua một đối số và để hoàn thành thành công nếu không, hay nó làm điều gì đó khác?
- Tôi có thể ghi đè nó bằng một số chức năng khác (và sẽ có bất kỳ lý do lành mạnh nào để làm như vậy) không?
Có thể kỹ năng đọc tài liệu của tôi không thành công (không phải là lần đầu tiên), nhưng dường như tôi không tìm thấy câu trả lời cho các câu hỏi này trong tài liệu API.
Cảm ơn bạn đã được trợ giúp.
Bạn nên tóm tắt bài đăng của mình để chỉ hỏi một câu hỏi, còn tiêu đề của bạn không khớp với câu hỏi của bạn. Ý của bạn là gì? –
Tôi đã xóa một câu hỏi có chủ đề nhỏ nhưng phần còn lại của câu hỏi được liên kết khá chặt chẽ. Theo như tôi hiểu nó, tiêu đề phù hợp với những điều này tốt. Có lẽ khi tôi nhìn thấy một câu trả lời tôi sẽ hiểu rằng nó không phải là một trận đấu tốt. – laffoyb
Bởi "một break giữa các khối mã" Tôi có nghĩa là tôi đã có hai khối mã đã được phân biệt một cách hợp lý (một từ một tập tin nguồn, một từ dòng lệnh IO) mà tôi muốn đặt cạnh nhau nhưng với một break từ làm nổi bật khối mã để cho biết rằng chúng không phải là tất cả các phần của cùng một tệp. Tôi nghĩ rằng điều này được gọi là "hàng rào" ở một số khu vực? – laffoyb