const fetchBalance = async () => {
if (isConnected && chain?.id == myChainId) {
tokenPairs.map(async (tokenPair) => {
const TokenOne = new provider.eth.Contract(
tokenPair.tokenOne.contract as AbiItem[],
tokenPair.tokenOne.address,
)
const TokenTwo = new provider.eth.Contract(
tokenPair.tokenTwo.contract as AbiItem[],
tokenPair.tokenTwo.address,
)
const TokenOneWei = await TokenOne.methods.balanceOf(address).call()
const TokenTwoWei = await TokenTwo.methods.balanceOf(address).call()
Promise.all([TokenOneWei, TokenTwoWei])
const BalanceTokenOne = Number(provider.utils.fromWei(TokenOneWei.toString(), "ether"))
const BalanceTokenTwo = Number(provider.utils.fromWei(TokenTwoWei.toString(), "ether"))
const tokenPairObj = {
firstToken: {
name: tokenPair.tokenOne.name,
image: tokenPair.tokenOne.image,
id: 1,
wallet: renderBalanceToken(BalanceTokenOne),
link: `https://pancakeswap.finance/swap?outputCurrency=${tokenPair.tokenOne.address}`
},
secondToken: {
name: tokenPair.tokenTwo.name,
image: tokenPair.tokenTwo.image,
id: 2,
wallet: renderBalanceToken(BalanceTokenTwo),
link: `https://pancakeswap.finance/swap?outputCurrency=${tokenPair.tokenTwo.address}`,
},
id: `${tokenPair.tokenOne.name}/${tokenPair.tokenTwo.name}`,
}
setAllTokenPairs((prev) => [...prev, tokenPairObj])
})
}
}
fetchBalance()
}, [isConnected, chain])
Давно таких простыней не видел
гений жаваскрипта
Замена стм говорили они
Жабаскрипт мало решает в реакте. Js это одно а фреймворк другое
в Promise.all должны передаваться все эти функции асинхронные
mappedTokenPairs = await Promise.All(tokenpairs.map(async....
и потом добавлять в стейт это? setAllTokens((prev), [prev, mappedTokenPairs])
спасибо большое
А зачем консоль скрывать ?
не проще было замапить асинхронные функции как было?
тут эффектор нужен
а как можно увеличить скорость появления данных?
в данной реализации они у тебя разом все один раз попадут в стейт и рендер будет 1 раз
Обсуждают сегодня