如何解决React 如何使用元掩码同时异步运行 2 个函数?
我想在我的 Metamask 钱包中运行 2 个待处理的:质押然后收获:
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)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。