Вопрос:
Я новичок в node.js и java script, я не могу найти значение этого ключевого слова “.on”. когда я сменил его с другим кодом слова.
var req = http.get(«http://www.google.com», function(res) { console.log(«Got response: » + res.statusCode); res.on(‘data’, function (chunk) { }); }).on(‘error’, function(e) { console.log(«Got error: » + e.message); }); Лучший ответ:
Метод по привязывает событие к объекту.
Это способ выразить ваше намерение , если происходит что-то (отправленные данные или ошибка в вашем случае), , а затем выполняет функцию, добавленную в качестве параметра. Этот стиль программирования называется Программирование, управляемое событиями.
Вы можете посмотреть его в Wikipedia
В node.js существует класс с именем EventEmitter, который предоставляет вам весь код, необходимый для основных событий, если вы решите использовать их в своем собственном коде (который я бы настоятельно рекомендуется в случае node.js). Документы для node.js EventEmitter здесь
Ответ №1
. on используется метод для привязки обработчика событий.
Ответ №2
Обратный вызов http.get вызывается с единственным аргументом (который вы назвали req). req, short для “request”, является общим именем, потому что этот аргумент является http.ClientRequest. Объект http.ClientRequest реализует stream.Writable, а здесь важный бит: все потоки являются экземплярами EventEmitter.
EventEmitter имеет функцию on, которая добавляет функцию прослушивателя для указанного события.
“функция прослушивателя” – это просто другое имя для функции “обратного вызова”
В вашем примере вы добавили слушателя для события data и события error. Функции прослушивателя называются (ergo термин “обратный вызов” ) с помощью EventEmitter.
Дополнительный кредит
Если вам когда-либо понадобится прослушиватель, чтобы прекратить прослушивание (т.е. вы больше не хотите, чтобы ваш callback вызывался), вы можете удалить слушателя с помощью эмитента .removeListener:
var myCallback = function(e) { console.log(‘Got error: ‘ + e.message); } res.on(‘error’, myCallback); // do some things… res.removeListener(‘error’, myCallback);
Если вы хотите, чтобы прослушиватель запускался один раз, вы можете использовать emitter.once вместо функции on, а затем вы не придется удалять его:
res.once(‘error’, myCallback);