You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中循环发送同一HTTP请求仅返回1次响应如何解决

问题原因

你当前的写法本质是在同一个HTTP请求的请求体中追加了3次data内容,而非发起3次独立的HTTP请求,因此只会收到1次服务端响应。
https.request方法调用时就会初始化一个单次的请求实例,req.write的作用是往该实例的请求体中追加待发送的数据,不会触发新请求的创建。你循环调用3次req.write,只是把3份data拼接进了同一个请求的请求体中,整个流程仅发起了1次请求,自然只会返回1次响应。

修复方案

将完整的请求创建逻辑移入循环内,每次循环都新建独立的请求实例即可,参考代码如下:

const https = require('https');
// 此处options、data为你已提前定义的请求配置和请求体内容
for(let i = 0; i < 3; i++){ 
  const req = https.request(options, res => {
    console.log(`statusCode: ${res.statusCode} ${res.statusMessage}`)
    res.on('data', d => {
      process.stdout.write(d)
    })
  })

  // 监听请求错误,避免异常导致进程退出
  req.on('error', error => {
    console.error(error)
  })

  req.write(data)
  req.end() // 必须调用end标识请求体写入完成,否则请求不会实际发出
}
注意事项
  • 每次发起新请求都需要单独创建https.request实例
  • 不要遗漏req.end()调用,未调用该方法时客户端会认为还有请求体内容待写入,会持续等待不会发送请求
  • 建议为请求绑定error事件监听,避免请求异常时直接抛出未捕获错误

内容的提问来源于stack exchange,提问作者Andrei Morgovan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 11:15:03