如何编写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
相关产品推荐
相关产品推荐

