javascript - XMLHttpRequest.readyState 是否有 node.js http 等效项?
问题描述
使用 Javascript 的 XMLHttpRequest 对象,有一个称为readyState的属性,它经常与响应代码一起使用,以在处理其他代码之前检查 HTTP 请求是否已完成。
if (this.readyState == 4 && this.status == 200) {
// Do stuff
}
使用 Node.js 的http 模块,您可以发出 HTTP 请求并检索状态代码,就像 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)
})
将此代码放在此处以在实时服务器上试用。
推荐阅读
- python - 如何在我使用函数时结束我的代码?
- laravel - Laravel 迁移,其中 id 列未命名为“id”导致错误
- python - 如何在不使用显式参数值的情况下用 numpy 重塑矩阵?
- javascript - 在 Fluen UI react 中选中切换按钮时如何更新下拉列表的项目?
- java - Java JVM有没有办法检索一个类的所有实例
- reactjs - 尝试导入错误:“Switch”未从“react-router-dom”导出。这个错误的原因是什么?
- docker-compose - 在 docker-compose 下运行时如何让 Dapr Service to Service Invocation 工作?
- java - 继续接受来自控制台的输入,直到用户中断
- windows-10 - The PowerShell code works when run from the PowerShell command prompt but not when run with double-click or turned into an executable
- java - 使用带有多个线程 Java 的 ConcurrentHashMap 的不同结果