web3 [object, Promise] 错误,.then 和 await 不起作用

问题描述

    <script src="https://cdn.jsdelivr.net/npm/web3@latest/dist/web3.min.js"></script>
    <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
...
    <script>
      const web3 = new Web3('https://bsc-dataseed1.binance.org:443');
      const version = web3.version.api;
      const burnAddress = "0x000000000000000000000000000000000000dead";

      //jQuery pull of contractABI from getAddress
      function pullData() {
        getAddress = $('input[name="contractAddress"]').val();
        getJSONString = 'https://api.bscscan.com/api?module=contract&action=getabi&address=' + getAddress + '&apikey' + API_KEY;
        $.getJSON(getJSONString,function(data) {
          contractABI = JSON.parse(data.result);
          //document.getElementById("json").innerHTML = "JSON: " + JSON.stringify(contractABI);
          myContract = new web3.eth.Contract(contractABI,getAddress);
          decimals = tokenContract.methods.decimals().call(); // promise error
          document.getElementById("decimals").innerHTML = "Decimals: " + decimals;

        });
        document.getElementById("addy").innerHTML = "Address: " + getAddress;
       }
     </script>

似乎无论我做什么我都无法填充数字,而且 JSON.stringify() 也没有显示任何内容

是的,在调用 pullData() 时传递表单输入 然后该地址拉出一个 ABI(有效) 我可以创建一个新的合约实例,我可以从阅读文档中提取尽可能多的 [object,Promise] 作为

可以处理的任何“我的方法”(也是的,console.log(decimals) 也可以工作) ,但没有一个在 HTML 中显示数字。 我确实在这里搜索过,我错过了什么?

上面的代码来自我的原始测试 HTML 页面

谢谢, 最大流量O2

解决方法

我对这个 API 不太了解,但我认为你需要改变这个:

decimals = tokenContract.methods.decimals().call(); // promise error
document.getElementById("decimals").innerHTML = "Decimals: " + decimals;

这样的事情:

tokenContract.methods.decimals().call().then(decimals => {
  document.getElementById("decimals").innerHTML = "Decimals: " + decimals;
});

也许阅读 Promise.then() 可能对您有所帮助。之后,查找 async/await。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...