React 如何使用元掩码同时 运行 2 个异步函数?
React how to run 2 function async simultaneously using metamask?
我想 运行 2 个待处理在我的 metamask 钱包中:质押然后收获:
const [pendingTx, setPendingTx] = useState(false)
const {onReward} = useHarvest(pid)
const {onStake} = useStake(3)
<Button
disabled={rawEarningsBalance === 0 || pendingTx}
size='sm'
variant='secondary'
marginBottom='15px'
onClick={async () => {
setPendingTx(true)
await onStake(rawEarningsBalance.toString())
await onReward()
setPendingTx(false)
}
}
>
{TranslateString(999, 'Pack it')}
</Button>
实际上当我 运行 它是我的第一个函数 运行 (await onStake
) 但是在我的钱包 metamask 之后不显示我确认收获。它显示我未经授权,因此我需要单击它以显示待处理的弹出窗口
不知道有没有遇到你的问题...
如果你想 运行 onStake
与 onReward
并行,你不能在每个之前使用 await
因为它等待这个特定的承诺完成。
您可以改为添加所有应 运行 与此多承诺对象上的 Promise.all
和 await
并行的承诺。
onClick={async () => {
setPendingTx(true)
await Promise.all([
onStake(rawEarningsBalance.toString()),
onReward()
]);
setPendingTx(false)
}
我想 运行 2 个待处理在我的 metamask 钱包中:质押然后收获:
const [pendingTx, setPendingTx] = useState(false)
const {onReward} = useHarvest(pid)
const {onStake} = useStake(3)
<Button
disabled={rawEarningsBalance === 0 || pendingTx}
size='sm'
variant='secondary'
marginBottom='15px'
onClick={async () => {
setPendingTx(true)
await onStake(rawEarningsBalance.toString())
await onReward()
setPendingTx(false)
}
}
>
{TranslateString(999, 'Pack it')}
</Button>
实际上当我 运行 它是我的第一个函数 运行 (await onStake
) 但是在我的钱包 metamask 之后不显示我确认收获。它显示我未经授权,因此我需要单击它以显示待处理的弹出窗口
不知道有没有遇到你的问题...
如果你想 运行 onStake
与 onReward
并行,你不能在每个之前使用 await
因为它等待这个特定的承诺完成。
您可以改为添加所有应 运行 与此多承诺对象上的 Promise.all
和 await
并行的承诺。
onClick={async () => {
setPendingTx(true)
await Promise.all([
onStake(rawEarningsBalance.toString()),
onReward()
]);
setPendingTx(false)
}