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 之后不显示我确认收获。它显示我未经授权,因此我需要单击它以显示待处理的弹出窗口

不知道有没有遇到你的问题... 如果你想 运行 onStakeonReward 并行,你不能在每个之前使用 await 因为它等待这个特定的承诺完成。 您可以改为添加所有应 运行 与此多承诺对象上的 Promise.allawait 并行的承诺。

onClick={async () => {
    setPendingTx(true)
    await Promise.all([
        onStake(rawEarningsBalance.toString()),
        onReward()
    ]);
    setPendingTx(false)
}