为什么使用useEffect从区块链中获取数据时得到的是promises数组?
Why do I get an array of promises when getting data from the blockchain with useEffect?
我正在使用 React 并使用 useEffect 从区块链获取数据,但问题是在我映射数据并将其放入 lendingData 数组后,当记录它时 returns 一个承诺数组。
代码:
const data = mainnet.Vaults.map((pool) => {
const loadLendingData = async () => {
const dataPool = await getPoolInfo(pool);
// setLendingData((prevPool) => [...prevPool, dataPool]);
return dataPool
};
return loadLendingData();
});
setLendingData(data)
setLoading(false);
}
如果我在拉取数据时使用了等待,为什么我会得到承诺?
看起来你应该使用 map
创建一个 promises 的数组,然后你可以 await
和 Promise.all
。
const promises = mainnet.Vaults.map(pool => getPoolInfo(pool));
const data = await Promise.all(promises);
setLendingData(data);
函数 loadLendingData 正在返回一个承诺,地图函数没有等待它得到解决。
const data = mainnet.Vaults.map((pool) => {
const loadLendingData = async () => {
const dataPool = await getPoolInfo(pool);
// setLendingData((prevPool) => [...prevPool, dataPool]);
return dataPool
};
return loadLendingData;
});
const res = Promise.all[data]
setLendingData(res)
setLoading(false);
}
我正在使用 React 并使用 useEffect 从区块链获取数据,但问题是在我映射数据并将其放入 lendingData 数组后,当记录它时 returns 一个承诺数组。 代码:
const data = mainnet.Vaults.map((pool) => {
const loadLendingData = async () => {
const dataPool = await getPoolInfo(pool);
// setLendingData((prevPool) => [...prevPool, dataPool]);
return dataPool
};
return loadLendingData();
});
setLendingData(data)
setLoading(false);
}
如果我在拉取数据时使用了等待,为什么我会得到承诺?
看起来你应该使用 map
创建一个 promises 的数组,然后你可以 await
和 Promise.all
。
const promises = mainnet.Vaults.map(pool => getPoolInfo(pool));
const data = await Promise.all(promises);
setLendingData(data);
函数 loadLendingData 正在返回一个承诺,地图函数没有等待它得到解决。
const data = mainnet.Vaults.map((pool) => {
const loadLendingData = async () => {
const dataPool = await getPoolInfo(pool);
// setLendingData((prevPool) => [...prevPool, dataPool]);
return dataPool
};
return loadLendingData;
});
const res = Promise.all[data]
setLendingData(res)
setLoading(false);
}