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

Web3调用async异步方法返回Promise { <pending> }问题求助

问题诊断
  • async函数返回值特性:所有被async关键字修饰的函数,执行后默认返回Promise实例。你直接调用getBalance后没有通过await或者.then()处理异步结果,直接打印变量拿到的就是处于未完成状态的Promise { <pending> }。
  • 代码拼写错误:函数定义的形参写为adress(缺失字母d),但函数内部调用web3.eth.getBalance时传入的变量名是address,会导致参数传递失效,即使处理了异步逻辑也拿不到正确结果。
修复方案

方式1:await 接收异步结果

await必须在async标记的作用域内使用,可通过立即执行异步函数包裹业务逻辑实现:

// 修正形参拼写,同时将查询结果return
const getBalance = async (address) => {
  try {
    const wei = await web3.eth.getBalance(address);
    return wei;
  } catch (err) {
    console.error("查询余额失败:", err);
  }
};

// 立即执行异步函数,用await接收返回结果
(async () => {
  const balanceWallet = await getBalance(address);
  console.log(balanceWallet);
})();

方式2:.then 链式调用处理异步结果

const getBalance = async (address) => {
  try {
    const wei = await web3.eth.getBalance(address);
    return wei;
  } catch (err) {
    console.error("查询余额失败:", err);
  }
};

// 通过.then回调拿到异步返回的余额结果
getBalance(address).then(balanceWallet => {
  console.log(balanceWallet);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 02:09:03