XMLHttpRequest.readyState 是否有 node.js http 等价物?

Is there an node.js http equivalent for XMLHttpRequest.readyState?

对于 Javascript 的 XMLHttpRequest 对象,有一个名为 readyState 的 属性,它经常与响应代码一起使用,以检查 HTTP 请求之前是否已完成处理其他代码。

 if (this.readyState == 4 && this.status == 200) {
   // Do stuff
 }

使用 Node.js 的 http module you can make HTTP requests 并检索状态代码,就像 XMLHttpRequest 对象一样。

if (`${res.statusCode}` == 200) {
  //Do things
}

但是,http 模块是否有任何与 XMLHttpRequest 对象所具有的“readyState”属性 等效的东西?我似乎无法在任何地方找到它的任何文档,但我想确保我只是 运行 发送请求完全完成后的下一个代码,而不是在完成一半时。

只要响应完全完成,您就可以使用 res.on('end', callback) 到 运行,完成时传递回调来处理响应。

在这种情况下,以一张巨大的图片为例。当检索到所有块时,它会继续进行到最后,然后在它之后立即调用回调。

const http = require('http')
const options = {
     host: 'placekitten.com',
     path: '/5000/2500'
} 

http.get(options, (res) => {
     let code = res.statusCode
     console.log("Got response: " + code)
     res.on('data', chunk => console.log("Data received"))
     res.on('end', () => {
          if (code === 200) {
               console.log("Sent request has fully finished")
          } else {
               console.log("Code wasn't 200!")
          }
     })
}).on('error', function(e) {
     console.log("Got error: " + e.message)
})     

放置此代码 here 以在实时服务器上试用。