Việc gọi lại cho http.get được gọi với một đối số duy nhất (mà bạn đã đặt tên req
). req
, viết tắt của "yêu cầu", là một tên phổ biến, bởi vì đối số này là một đối tượng http.ClientRequest. Đối tượng http.ClientRequest triển khai stream.Writable và đây là bit quan trọng: tất cả các luồng là các phiên bản của EventEmitter.
EventEmitter có chức năng gọi là on, bổ sung chức năng nghe cho một sự kiện được chỉ định.
"chức năng nghe" chỉ là tên gọi khác của "hàm callback"
Trong ví dụ của bạn, bạn đã thêm một người biết lắng nghe cho sự kiện data
và sự kiện error
. Các hàm của trình nghe là được gọi là (gọi lại từ "callback") bởi EventEmitter.
Điểm thêm
Nếu bạn cần một người biết lắng nghe để ngăn chặn nghe (ví dụ, bạn không còn muốn gọi lại của bạn được gọi là), bạn có thể loại bỏ một người biết lắng nghe với emitter.removeListener chức năng:
var myCallback = function(e) { console.log('Got error: ' + e.message); }
res.on('error', myCallback);
// do some things...
res.removeListener('error', myCallback);
Nếu bạn chỉ muốn người nghe chạy một lần, bạn có thể sử dụng emitter.once thay vì chức năng on
và sau đó bạn sẽ không phải xóa nó:
res.once('error', myCallback);
cảm ơn bạn, tôi đoán tôi chưa tự mình tạo tài liệu với tài liệu node.js. – avicennasoftwarelabs
Xem tài liệu cho 'luồng'. Kết quả của một yêu cầu HTTP là một luồng 'có thể đọc được 'và sẽ có tất cả các sự kiện và phương thức liên kết với nó. – ebohlman