You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js中使用form表单提交调用Ethereum API执行中断如何解决?

问题原因

这个bug是三个问题共同导致的:

  • 没有阻止表单提交的默认行为:HTML表单默认提交后会刷新整个页面,你触发submit事件后浏览器直接重载,所有正在运行的异步API调用都会被直接中止,这是最核心的原因。
  • 异步函数没有加await等待执行:withdrawETH和depositETH都是async异步函数,你在zkSyncToZKSwap里直接调用没有加await,函数不会等待这两个异步逻辑执行完成就会结束,再配合页面刷新,自然看不到后续的日志输出。
  • 事件对象没有显式传入:zkSyncToZKSwap函数没有定义event形参,直接使用全局event对象存在兼容性问题,部分场景下会取不到输入值。
修复方案

你只需要修改zkSyncToZKSwap函数的逻辑即可:

async function zkSyncToZKSwap(event) {
  // 第一步:阻止表单默认提交刷新行为
  event.preventDefault();
  console.log("hello1");
  console.log("amount = ", event.target.amount.value);
  // 第二步:给异步函数加await,如果需要两个函数并行可以用Promise.all
  await withdrawETH();
  await depositETH();
}

如果你的业务场景允许withdrawETH和depositETH并行执行,可以改成:

async function zkSyncToZKSwap(event) {
  event.preventDefault();
  console.log("hello1");
  console.log("amount = ", event.target.amount.value);
  await Promise.all([withdrawETH(), depositETH()]);
}

修改完后表单提交就不会触发页面刷新,异步API的逻辑也可以正常执行完成。


内容的提问来源于stack exchange,提问作者user16697491

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 05:06:03