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

现有代码仅返回首个API响应,如何多参数调用并合并JSON结果?

解决多参数调用SerpApi并合并响应的问题

原代码仅处理了单组参数的请求,且用单个Promise直接返回第一个结果,无法支持多组请求的批量处理。以下是修改方案,实现多参数调用并合并所有响应:

1. 封装回调式API为Promise

SerpApi的search.json是回调风格,先将其包装为Promise,方便用async/await和Promise.all批量处理:

const fetchSearch = (params) => {
  return new Promise((resolve, reject) => {
    search.json(params, (data) => {
      // 检查请求是否成功,根据实际API返回调整判断逻辑
      if (data.error) {
        reject(new Error(`搜索失败:${data.error}`));
      } else {
        resolve(data);
      }
    });
  });
};

2. 批量处理所有请求并合并结果

把所有参数存入数组,用Promise.all并行发起请求,等待全部完成后返回合并结果:

修改后的完整代码:

const SerpApi = require('google-search-results-nodejs');
const search = new SerpApi.GoogleSearch("674d023b72e91fcdf3da14c730387dcbdb611f548e094bfeab2fff5bd86493fe");

// 封装Promise版搜索函数
const fetchSearch = (params) => {
  return new Promise((resolve, reject) => {
    search.json(params, (data) => {
      if (data.error) {
        reject(new Error(`搜索失败:${data.error}`));
      } else {
        resolve(data);
      }
    });
  });
};

const handlePictures = async (req, res) => {
  try {
    // 所有要查询的参数组,后续加参数直接往数组里追加即可
    const paramsList = [
      { q: "kevin durant", tbm: "isch" },
      { q: "lou williams", tbm: "isch" }
      // 可继续添加更多参数组,支持最多200组
    ];

    // 并行发起所有请求,等待全部完成
    const allResults = await Promise.all(paramsList.map(params => fetchSearch(params)));

    // 可选:如果需要按关键词关联结果,可转成对象格式
    // const mergedResult = allResults.reduce((acc, result, index) => {
    //   acc[paramsList[index].q] = result;
    //   return acc;
    // }, {});

    // 返回合并后的JSON响应
    res.json(allResults);
  } catch (err) {
    // 捕获错误并返回错误响应
    res.status(500).json({ error: err.message });
  }
};

module.exports = { handlePictures };

关键说明

  • 并行请求:Promise.all会同时发起所有请求,比串行请求效率更高,适合批量调用场景。
  • 错误处理:用try/catch捕获请求异常,避免单个请求失败导致整个接口崩溃;如果允许部分请求失败,可改用Promise.allSettled过滤成功结果。
  • 扩展性:后续新增参数只需往paramsList数组添加对象即可,注意控制请求频率,避免触发SerpApi的配额限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 06:15:39