例如,某方法希望读取某个地址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提示代码执行出错。
在调用 allowance 少了一个 call 吧?