2012-10-15 7 views
16

Jestem nowy w skrypcie node.js i java, nie mogę znaleźć znaczenia tego słowa kluczowego ".on". kiedy zmieniam go z innym kodem słowa nie powiodło się.W node.js "request.on" co to jest ".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); 
}); 

Odpowiedz

18

Zdarzenie wiąże obiekt na.

Jest to sposób, aby wyrazić swoje intencje jeśli istnieje coś się dzieje (dane wysyłane lub błąd w Twoim przypadku), następnie wykonać funkcja dodana jako parametr. Ten styl programowania nazywa się Programowanie sterowane zdarzeniami. Może chcesz szukać go w Wikipedia

W node.js, istnieje klasa o nazwie EventEmitter który dostarcza Ci wszystkich kodu, który trzeba podstawowych zdarzeń, jeśli zdecydujesz się z nich korzystać na własną rękę kod (który zdecydowanie polecam w przypadku pliku node.js). Dokumenty dla node.js EventEmitterhere

8

.on jest stosowanie sposobu do wiązania obsługi zdarzeń.

+0

dziękuję, myślę, że nie mam jeszcze oriantate z dokumentacją node.js. – avicennasoftwarelabs

+0

Zobacz dokumentację dla 'stream'. Wynikiem żądania HTTP jest czytelny 'stream' i będzie zawierał wszystkie zdarzenia i metody z nim związane. – ebohlman

2

Wywołanie zwrotne dla http.get jest wywoływana z jednym argumentem (który masz nazwie req). req, skrót od "request", jest nazwą pospolitą, ponieważ ten argument jest obiektem http.ClientRequest. Obiekt http.ClientRequest implementuje stream.Writable, a tu jest ważny bit: wszystkie strumienie są instancjami EventEmitter.

EventEmitter ma funkcję o nazwie on, która dodaje funkcję detektora dla określonego zdarzenia.

„funkcja słuchacz” to po prostu inna nazwa „funkcji zwrotnej”

w przykładzie, dodasz detektor zdarzenia data a wydarzeniem error. Funkcje odbiornika są o nazwie (ergo termin "oddzwanianie") przez EventEmitter.

Extra Credit

Jeśli kiedykolwiek potrzebują słuchacza przestać słuchać (czyli już nie chcesz, żeby Twój zwrotna nazywać), można usunąć słuchacza z emitter.removeListener funkcję:

var myCallback = function(e) { console.log('Got error: ' + e.message); } 
res.on('error', myCallback); 
// do some things... 
res.removeListener('error', myCallback); 

Jeśli chcesz tylko słuchaczem, aby uruchomić jeden raz, można użyć emitter.once zamiast funkcji on, a wtedy nie będzie musiał go usunąć:

res.once('error', myCallback);