You need to enable JavaScript to run this app. 如何从async/await回调函数获取返回值?GCP存储桶文件夹查询问题
优惠活动
大模型
产品
解决方案
定价
更多

如何从async/await回调函数获取返回值?GCP存储桶文件夹查询问题

问题根因
  • 代码同时混用了bucket.getFiles()的回调写法和async/await异步等待逻辑:当你给getFiles传入回调函数时,方法不会返回Promise,此时await操作没有实际作用,回调的返回值也不会被赋值给外层的models变量。
  • 要获取存储桶内的文件夹列表,必须在查询参数中配置delimiter: '/',否则GCP不会返回文件夹前缀集合。
修复后代码
export async function getTritonModels(bucketName, path) {
  try {
    const bucket = storage.bucket(bucketName);
    // 配置查询参数,delimiter设置为/用于识别文件夹层级
    const query = {
      prefix: path,
      delimiter: '/',
      autoPaginate: false
    };
    // 不传回调,直接await获取返回结果
    const [files, nextQuery, apiResponse] = await bucket.getFiles(query);
    // 提取前缀集合作为文件夹列表,增加空值兜底
    const models = [...(apiResponse?.prefixes || [])];

    console.log("models:", models);
    return models;
  } catch (err) {
    console.error("获取文件夹列表失败:", err);
    return [];
  }
}
核心修改说明
  • 移除getFiles的入参回调,直接通过await接收方法返回的Promise结果,返回数组的第三个元素即为你需要的apiResponse对象
  • 补充查询参数的delimiter: '/'配置,触发GCP返回同级文件夹的前缀集合
  • 增加空值兜底逻辑,避免apiResponse.prefixes为空时数组展开报错
  • 补充try块内的返回语句,保证函数正常执行时也能返回拿到的文件夹列表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 22:30:04