Il callback per http.get viene richiamato con un singolo argomento (che hai nominato req
). req
, abbreviazione di "richiesta", è un nome comune, poiché questo argomento è un oggetto http.ClientRequest. L'oggetto http.ClientRequest implementa stream.Writable ed ecco il bit importante: tutti gli stream sono istanze di EventEmitter.
EventEmitter ha una funzione denominata on, che aggiunge una funzione listener per un evento specificato.
"funzione listener" è solo un altro nome per "funzione di callback"
Nel tuo esempio, hai aggiunto un listener per l'evento e l'evento data
error
. Le funzioni di ascolto sono chiamate (ergo il termine "callback") da EventEmitter.
Credit Extra
Se hai bisogno di un ascoltatore di fermare l'ascolto (cioè, non si desidera più il callback per essere chiamato), è possibile rimuovere un ascoltatore con la funzione emitter.removeListener:
var myCallback = function(e) { console.log('Got error: ' + e.message); }
res.on('error', myCallback);
// do some things...
res.removeListener('error', myCallback);
Se si desidera solo un ascoltatore da eseguire una volta, è possibile utilizzare emitter.once anziché la funzione on
, e quindi non sarà necessario rimuoverlo:
res.once('error', myCallback);
grazie, suppongo di non aver ancora oriantato me stesso con la documentazione di node.js. – avicennasoftwarelabs
Guarda la documentazione di 'stream'. Il risultato di una richiesta HTTP è un 'stream' leggibile e avrà tutti gli eventi e i metodi associati a tale. – ebohlman