出于某種原因,這按預期作業:
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,否則我無法將它們與代碼中的另一個資料結構匹配。
uj5u.com熱心網友回復:
您需要提供Promise.all一系列承諾。在您的第二個代碼段中,您將它放入一組普通物件中,并在其中一個鍵中包含一個 promise。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 };
})
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/351494.html
