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

Promise.all未按预期resolve promise,如何返回携带metadataPDA的结果

问题原因

Promise.all 只会等待传入数组中本身是Promise类型的元素执行完成。
你第一段代码中map返回的是axios.get()产生的Promise实例数组,Promise.all会正常等待所有请求完成,返回响应结果数组。
你第二段代码中map返回的是普通对象数组,Promise.all不会递归处理对象内部的Promise,所以直接返回了原对象,内部的axios.get请求没有被等待,自然处于pending状态。

修复方案

你需要让map返回的每一项都是Promise,该Promise在请求完成后resolve为你需要的、携带metadataPDA和已解析的metadataExternal的对象,写法如下:

const metadatasExternal = await Promise.all(
  NFTs.map(async n => ({
    metadataPDA: n.metadataPDA,
    metadataExternal: await axios.get(n.metadataOnchain?.data.uri!),
  }))
)

给map的回调加async关键字后,每次遍历都会返回一个Promise实例,Promise.all会等待所有Promise执行完成。每个Promise内部会先等待axios.get请求返回结果,再组装成你需要的对象返回,最终得到的数组里每个元素的metadataExternal都是已解析的响应结果,同时保留了metadataPDA字段可以做匹配。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:45:03