web3js中,如何在读取链上数据后,将其作为判断条件?

例如,某方法希望读取某个地址A对某合约B的代币转账授权allowance;如果没有授权,就直接授权一个大数。

假设代币合约已被实例化为tokenInstance;

我的代码是:

async function transferByExternal(){

       let selectedAddress = await web3js.eth.getAccounts();
       //先判断钱包是否连接上
       if(selectedAddress.length < 1){
         linkWallet();
       }else{
       //如果钱包已连接,再判断有无授权余额

        let allowanceOfCurrentAccount = await tokenInstance.methods.allowance(selectedAddress[0],"0x83d628498D35cC959E4C67A5F6ebc067E3303C54");

        if(allowanceOfCurrentAccount == 0){
         //执行授权语句
        }else{
         //执行转账语句
       }
     }

实际情况是,allowanceOfCurrentAccount的值始终取不到,如果已经有授权,则可以执行else中的转账语句;如果没有授权,if后面的转账语句也不能被执行,metamask提示代码执行出错。

请先 登录 后评论

最佳答案 2021-05-23 22:22

在调用 allowance 少了一个 call 吧?

看下文档: web3.eth.Contract — web3.js 中文文档

请先 登录 后评论

其它 0 个回答

  • 1 关注
  • 1 收藏,3574 浏览
  • jimmy 提出于 2021-05-23 17:45