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

Google Drive API异步获取共享驱动器列表返回空数组问题求助

问题分析与解决方案

核心问题是异步流程时序错误:你的async函数里混用了axios.then回调和直接返回操作,导致函数在请求完成、数据推入数组前就返回了空的resultArray——then是异步执行的,函数主线程会跳过它直接执行后续的return语句。

修正方案

改用await统一处理异步请求,确保每一次分页请求完成后再继续循环,同时保证函数在所有数据获取完毕后再返回结果。

修正后的示例代码

async function getAllDrives() {
  const resultArray = [];
  let pageToken = null;

  do {
    try {
      // 用await替代then,等待请求完成再执行后续逻辑
      const res = await axios.get('https://www.googleapis.com/drive/v3/drives', {
        params: {
          pageSize: 100,
          pageToken,
          q: 'hidden = false' // 过滤非隐藏共享驱动器
        },
        headers: {
          'Authorization': 'Bearer 你的访问令牌'
        }
      });

      // 批量推入当前页数据
      resultArray.push(...res.data.drives);
      // 更新分页令牌,用于下一轮请求
      pageToken = res.data.nextPageToken;

      // 这里的console.log会在请求完成后执行,能看到正确数据
      console.log('当前页驱动器:', res.data.drives);
    } catch (err) {
      console.error('获取驱动器失败:', err);
      throw err; // 抛出错误让调用者处理
    }
  } while (pageToken); // 有下一页令牌就继续循环

  console.log('所有驱动器:', resultArray);
  return JSON.stringify(resultArray);
}

关键注意事项

  1. 避免同时使用await和.then,保持异步代码风格一致,防止时序混乱
  2. 确认请求参数q: 'hidden = false'正确,确保过滤掉隐藏的共享驱动器
  3. 检查访问令牌的权限:需要drive.readonly.metadata或更高权限才能读取共享驱动器列表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:16:58