Solidity 函数不返回预期数据
Solidity Functions Not Returning Expected Data
我有一个具有以下功能的合同:
function supply () constant returns (uint sup) {
sup = 100;
return sup;
}
运行
var token = web3.eth.contract(contractAbi).at(contractAddress);
token.supply.call()
returns:
{ [String: '0'] s: 1, e: 0, c: [ 0 ] }
这是怎么回事?我在合同中的所有功能都会发生这种情况。
谢谢!
你得到的是 "BigNumber" 格式,uint(256) 总是这样,因为数字大于 Javascript 实际可以处理的数字。
考虑使用返回值格式。 Examples/docs 这里:https://github.com/ethereum/wiki/wiki/JavaScript-API#a-note-on-big-numbers-in-web3js
松露风格(承诺)
token.supply.call().then(function(returned) {
console.log(returned.toString(10));
}
回调样式
token.supply.call(function(error, returned) {
if(!error) {
console.log(returned.toString(10));
} else {
console.error(error);
});
以上示例可能会降低一些精度。从上面链接的文档...
it is recommended to keep you balance always in wei and only transform
it to other units when presenting to the user:
希望对您有所帮助。
更新:
合同在 Remix 中对我有效,所以我会专注于您调用函数的方式和等待响应。
我有一个具有以下功能的合同:
function supply () constant returns (uint sup) {
sup = 100;
return sup;
}
运行
var token = web3.eth.contract(contractAbi).at(contractAddress);
token.supply.call()
returns:
{ [String: '0'] s: 1, e: 0, c: [ 0 ] }
这是怎么回事?我在合同中的所有功能都会发生这种情况。
谢谢!
你得到的是 "BigNumber" 格式,uint(256) 总是这样,因为数字大于 Javascript 实际可以处理的数字。
考虑使用返回值格式。 Examples/docs 这里:https://github.com/ethereum/wiki/wiki/JavaScript-API#a-note-on-big-numbers-in-web3js
松露风格(承诺)
token.supply.call().then(function(returned) {
console.log(returned.toString(10));
}
回调样式
token.supply.call(function(error, returned) {
if(!error) {
console.log(returned.toString(10));
} else {
console.error(error);
});
以上示例可能会降低一些精度。从上面链接的文档...
it is recommended to keep you balance always in wei and only transform it to other units when presenting to the user:
希望对您有所帮助。
更新:
合同在 Remix 中对我有效,所以我会专注于您调用函数的方式和等待响应。