You need to enable JavaScript to run this app. JavaScript调用封装Google API的函数返回数组得到undefined求助
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript调用封装Google API的函数返回数组得到undefined求助

问题根因

  1. 你定义的listGroups函数没有设置外层返回值,默认返回undefined,这是你调用时拿到undefined的直接原因。
  2. service.groups.list是异步API,你在它的回调函数内写的return list仅作用于回调函数本身,无法把值传递到外层的listGroups函数。且你同步调用listGroups时,API请求还没完成,回调函数还没执行,list数组还没被填充数据。

修复代码

listFunction.mjs 改造

把listGroups封装为返回Promise的函数,用resolve抛出成功结果,reject抛出错误:

import { google } from 'googleapis';

export function listGroups(auth) {
  return new Promise((resolve, reject) => {
    const service = google.admin({version: 'directory_v1', auth});
    const list = [];
    service.groups.list({
      customer: 'my_customer',
      orderBy: 'email',
      maxResults: 10,
      sortOrder: 'ASCENDING',
    }, (err, res) => {
      if (err) {
        console.error('API返回错误:', err.message);
        return reject(err);
      }
      const groups = res.data.groups;
      groups.forEach((group) => {
        list.push(group.email);
      });
      resolve(list);
    });
  })
}

testCallApi.mjs 改造

异步返回的Promise需要用await或者then接收结果:

// 方式1:async/await 写法
(async () => {
  const groupList = await listGroups(callAPI());
  console.log(groupList);
})();

// 方式2:then 写法
listGroups(callAPI())
  .then(groupList => console.log(groupList))
  .catch(err => console.error('获取失败:', err));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 10:54:04