Как только http.get
вызывает ваш обратный вызов с объектом res
, он возвращает http.ClientRequest
.http.ClientRequest
наследуется от Stream
.
Итак, согласно документам :
Событие finish
генерируется после вызова метода stream.end()
, и все данные былипокраснел к основной системе.
В случае http.get
, stream.end()
вызывается сразу после выполнения запроса (см. здесь ).Примечание: вызов stream.end()
отличается от прослушивания события res.on('end')
.
Так что для http.get
событие finish
сработает сразу после выполнения запроса, а затем начнутся события объекта res
Ваш res
объект является HTTP.IncomingMessage
, который реализует интерфейс Readable Stream
Согласно документам Readable Stream
:
Событие 'end' генерируется, когда из потока больше нет данных, которые нужно использовать.
Итак, сначала запускается end
, затем close
Также для Readable Streams
Событие 'close' генерируется, когда поток илюбые его базовые ресурсы (например, файловый дескриптор) были закрыты.Событие указывает, что больше событий не будет генерироваться, и дальнейших вычислений не будет.
Таким образом, события запускаются в следующем порядке: finish
, end
, close