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

如何编写JS函数返回https.get请求获取的文本内容?

解决异步HTTPS请求返回结果的问题

嘿,我懂你想要的效果——把这段基于回调的HTTPS请求改成能直接返回目标内容的函数对吧?因为原生的https.get是异步操作,直接在函数里return value肯定拿不到结果,得用Promise来包装异步逻辑,这样才能方便地获取返回值。

先给你指出原代码里的两个小问题:

  • 变量名写错了:$data += chunk应该是data += chunk
  • URL用了http://但调用的是https.get,这会导致请求失败,要改成HTTPS的URL(比如https://mysiteweb.com/info),或者如果目标是HTTP服务,就改用http模块

下面是封装好的可返回结果的函数,用Promise来处理异步流程:

const https = require('https');

function getTargetValue() {
  return new Promise((resolve, reject) => {
    // 确保URL是HTTPS协议,否则换成http模块
    https.get('https://mysiteweb.com/info', (response) => {
      let rawData = '';

      // 接收响应数据块
      response.on('data', (chunk) => {
        rawData += chunk;
      });

      // 响应接收完成后解析数据
      response.on('end', () => {
        try {
          // 解析JSON并提取value字段
          const parsedData = JSON.parse(rawData);
          resolve(parsedData.value);
        } catch (parseError) {
          // 处理JSON解析失败的情况
          reject(`解析JSON出错: ${parseError.message}`);
        }
      });
    }).on('error', (requestError) => {
      // 处理请求本身的错误(比如网络问题、域名不存在)
      reject(`请求失败: ${requestError.message}`);
    });
  });
}

接下来你可以用async/await来优雅地调用这个函数,获取返回值:

// 示例:在async函数中调用
async function useTargetValue() {
  try {
    const value = await getTargetValue();
    console.log('获取到的目标内容:', value);
    // 这里可以直接return value,或者用它做后续逻辑
    return value;
  } catch (error) {
    console.error('出错了:', error);
  }
}

// 执行函数
useTargetValue();

最后再提醒两点:

  • 异步操作的结果永远没法同步返回,所以Promise+async/await是Node.js里处理这类场景的标准方式
  • 一定要处理错误分支,不然遇到网络问题或者JSON格式错误时,程序会默默失败,很难排查问题

内容的提问来源于stack exchange,提问作者Eric Lerouge

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:18:34