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

如何从Promise中获取值并存储到数组用于React开发

解决Firebase Promise获取URL后无法存储到数组/对象的问题

原代码问题分析

你的代码存在两个关键问题:

  • 同时混用await和.then()属于冗余写法,且.then()中的forEach没有返回值,导致multipleurls最终为undefined
  • Promise.all本身会返回所有Promise resolve后的结果数组,你不需要额外用forEach遍历打印,直接接收这个数组即可

正确写法示例

如果你的urlRef是包含10个Firebase存储引用的数组,直接用await接收Promise.all的结果就能拿到完整URL列表:

// 假设urlRefs是你的10个存储引用数组,比如const urlRefs = [storageRef1, storageRef2, ..., storageRef10];
const multipleUrls = await Promise.all(urlRefs.map(ref => ref.getDownloadURL()));
// 此时multipleUrls就是包含所有URL的数组,可直接在代码其他位置使用
console.log(multipleUrls);

你提到的封装函数解法

将逻辑封装成函数并返回结果,也是完全可行的方案,方便在代码任意需要的地方调用:

async function fetchFirebaseUrls() {
  const urlRefs = [/* 填入你的10个存储引用 */];
  return Promise.all(urlRefs.map(ref => ref.getDownloadURL()));
}

// 在需要使用的地方调用(注意要在async函数内)
const urls = await fetchFirebaseUrls();
// 直接使用urls数组即可

核心逻辑都是正确接收Promise.all解析后的结果数组,避免在.then()中使用无返回值的forEach导致数据丢失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 22:15:36