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

jimmy jimmy 提出于 2021-05-23 17:45 5784 浏览

例如,某方法希望读取某个地址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 中文文档

Tiny熊

擅长:智能合约,以太坊 · 采纳率 33% · 回答于 2021-05-23 19:44

其它 0 个回答

写回答

你需要登录后才可以回答问题,登录