【问题标题】:React how to run 2 function async simultaneously using metamask?反应如何使用元掩码同时运行 2 个函数异步?
【发布时间】:2021-08-17 14:04:33
【问题描述】:

我希望在我的 metamask 钱包中运行 2 个待处理:stake 然后收获:

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),但在我的钱包元掩码之后,并没有显示我确认收获。它显示我未经授权,因此我需要单击它以显示待处理的弹出窗口

【问题讨论】:

    标签: reactjs ethereum solidity metamask


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2015-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-31
      • 2023-02-05
      • 2022-11-03
      • 1970-01-01
      • 2021-09-23
      相关资源
      最近更新 更多