typescript - Promise.all 没有按预期解决承诺
问题描述
由于某种原因,这按预期工作:
const metadatasExternal = await Promise.all(
NFTs.map(n => axios.get(n.metadataOnchain?.data.uri!))
)
但这不会:
const metadatasExternal = await Promise.all(
NFTs.map(n => ({
metadataPDA: n.metadataPDA,
metadataExternal: axios.get(n.metadataOnchain?.data.uri!),
}))
)
具体来说,承诺没有得到解决。这是我回来的:
{
metadataPDA: PublicKey {}
metadataExternal: Promise { <pending> }
},
这是为什么?我该如何解决?我特别需要metadataPDA
在每个 promise 中包含 key,否则我无法将它们与代码中的另一个数据结构匹配。
解决方案
您需要提供Promise.all
一系列承诺。在您的第二个片段中,您将它提供给一组普通对象,其中一个键中有一个承诺。Promise.all
不懂魔法,也无法等待你隐藏在所述对象中的承诺。
相反,请确保您在map
-
const metadatasExternal = await Promise.all(
NFTs.map(async n => {
const data = await axios.get(n.metadataOnchain?.data.uri!);
return { metadataPDA: n.metadataPDA, metadataExternal: data };
})
);
推荐阅读
- visual-studio - Visual Studio 分支比较给出误报。相同的文件被标记为不同
- r - 在 ggplotly 中使用 geom_tile 的颜色美学
- python - 如何在python中自动找到文件路径
- javascript - JavaScript 生成的 Materialise 卡片显示问题
- metaprogramming - 元类的元类?
- google-chrome - Autodesk forge 查看器将样式设置为镶边在 chrome 显示错误
- r - 缺少参数“x”,ezANOVA 中没有默认值
- airflow - 为什么Airflow在清除其他任务时会重新安排当时不存在的任务
- javascript - 如何在自身内部使用变量
- reactjs - Redux 商店不会更新 app.js 中的所有更改