web3.js查询方法的调用方式汇总
Posted 乞力马扎罗的雪CYF
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了web3.js查询方法的调用方式汇总相关的知识,希望对你有一定的参考价值。
web3.js中的constant方法调用:
(1)调用方式1
contractAddr.register.call(amount, from: account);
constant方法不需要gas。【from参数可以省略】
(2)调用方式2
contractAddr.register.call(amount, from: account).then(function(returnValue)
console.log(returnValue.valueOf());
);
可以获得constant函数真正的返回值。【from参数可以省略】
(3)调用方式3
contractAddr.register(amount, from:account).then(function(returnValue)
console.log(returnValue.valueOf());
);
也可以不使用call(),直接调用比较方便,也为了和交易tx方法统一。【from参数可以省略】
web3.js对于constant方法返回值的测试
- 一个返回值测试
可以返回uint,int,bytes32,address,string,bool;
int数组、uint数组、address数组、bytes32数组(如何将返回的bytes32转化为字符串输出请参考下面)
但是不能返回string数组(用返回bytes32代替).
- 多个返回值测试
可以返回多个值,其实相当于返回一个数组,这多个返回值中可以包含数组。参考代码如下:
合约中的实现:
function register(int ui)constant returns(bool, int, string, bytes32, address)
if(ui != 0)
return (true, ui, "success", "bytes32", 0x39ff90056661184448e18b2517d018660babcb48);
else
return (false, ui, "fail", "bytes323232", 0x39ff90056661184448e18b2517d018660babcb49);
js中的实现:
contractAddr.register(amount, from: account).then(function(returnValue)
console.log(returnValue[0]);
console.log(returnValue[1].valueOf());
console.log(returnValue[2]);
console.log(hexCharCodeToStr(returnValue[3]));
console.log(returnValue[4]);
);
以上是关于web3.js查询方法的调用方式汇总的主要内容,如果未能解决你的问题,请参考以下文章
前端Vue项目调用页面web3.js:连接metaMask钱包,(查询钱包ETH余额,查询代币余额,ETH转账,代币转账,代币授权,查询授权数量,计算价格)等功能