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

如何在Electron的net请求函数中返回响应数据而非请求本身

解决Electron net.request异步数据返回问题

核心问题在于net.request是异步操作,无法通过同步方式直接返回回调内的数据,必须用Promise封装异步流程,让getCode()返回一个Promise对象,后续通过异步方式获取结果。

修改后的代码

const { net } = require('electron');
const cheerio = require('cheerio');

function getCode() {
  return new Promise((resolve, reject) => {
    let rawData = '';
    const newReq = net.request({
      method: 'GET',
      url: "https://url.com/",
      headers: {
        'Content-Type': 'application/json',
        'Cookie': 'lang=en;'
      }
    });

    newReq.on('response', (response) => {
      // 拼接所有数据块(data事件可能多次触发)
      response.on('data', (chunk) => {
        rawData += chunk;
      });

      // 数据接收完成后处理并返回结果
      response.on('end', () => {
        try {
          // 这里替换成你的实际数据处理逻辑
          // 示例:用cheerio解析HTML
          const $ = cheerio.load(rawData);
          const code = $('目标选择器').text(); // 替换为实际需要提取的内容

          // 如果是JSON数据,用JSON.parse(rawData)解析
          // const code = JSON.parse(rawData);

          resolve(code);
        } catch (err) {
          reject(err);
        }
      });

      response.on('error', (err) => {
        reject(err);
      });
    });

    newReq.on('error', (err) => {
      reject(err);
    });

    newReq.end();
  });
}

调用方式

因为getCode()返回Promise,需要用异步方式获取结果:

方式1:async/await(推荐)

async function fetchCode() {
  try {
    const code = await getCode();
    console.log('处理后的数据:', code);
    // 在这里使用code
  } catch (err) {
    console.error('请求或处理失败:', err);
  }
}

fetchCode();

方式2:链式调用.then()

getCode()
  .then(code => {
    console.log('处理后的数据:', code);
    // 在这里使用code
  })
  .catch(err => {
    console.error('请求或处理失败:', err);
  });

关键说明

  1. Promise封装:通过Promise把异步请求的成功/失败逻辑统一管理,成功时用resolve传递处理后的数据,失败时用reject传递错误。
  2. 数据拼接:response的data事件可能分多次返回数据块,必须将所有chunk拼接成完整的rawData,再在end事件中统一处理,避免数据丢失。
  3. 异步调用:getCode()现在返回Promise,调用方必须用await或.then()的异步方式获取结果,不能同步直接取值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 01:35:01