.then 和 await 不起作用的 web3 [object, Promise] 错误
web3 [object, Promise] error that .then and await does not work
<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)也有效,但 none 显示 HTML 中的数字。
我确实在这里搜索过,我错过了什么?
上面的代码来自我的原始测试 HTML 页面。
谢谢,
MaxFlowO2
我不太了解这个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.
<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)也有效,但 none 显示 HTML 中的数字。 我确实在这里搜索过,我错过了什么?
上面的代码来自我的原始测试 HTML 页面。
谢谢, MaxFlowO2
我不太了解这个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.