Different ways to invoke contract method

2019-03-04 15:33发布

问题:

I have one contract with method name as getValues().From Dapp I am invoking contract method as 'contractCAt.getValues.call(function(error,result){...})' this works fine and by using 'contractCAt.getValues(function(error,result){...})' this syntax also works fine.I didn't get any difference between those two ways to invoke contract method.So could anyone help me to give idea about those syntax.

回答1:

See the web3j documentation:

  • contractCAt.getValues.call() is run locally and will not alter the state of your contract on the blockchain. Does not consume any ether.
  • contractCAt.getValues.sendTransaction() does alter the state (assuming the transaction is successfully mined).
  • contractCAt.getValues() automatically delegates to one of the two above based on the method definition. Constant and pure functions will use call() while the rest will use sendTransaction().