我有一个方法名称为getValues()的契约。从Dapp我调用契约方法为'contractCAt.getValues.call(function(error,result){...})'这样可以正常使用' contractCAt.getValues(function(error,result){...})'这个语法也很好。我调用契约方法的两种方法没有任何区别。所以任何人都可以帮我理解这些语法
答案 0 :(得分:1)
handleResponse(data) {
// bind this in your constructor.
this.setState({ Data: data });
}
onClick() {
var brand = Id;
ReportTitle = brand;
url = base_url + brand + "/posts?access_token=" + Token + request;
var hasnext = true;
getNextAndConcatJSonOrNot(url, 0, finalJson, this.handleResponse);
}
function getNextAndConcatJSonOrNot(urlToCall, cnt, jsonData, handleResponse){
var jsonFinalObject = '';
$.getJSON(urlToCall).done(function(data) {
var tempJson = {};
tempJson = jsonData.concat(data.data);
jsonData = tempJson;
cnt++;
if(data.paging.next != "" && cnt < 2){
getNextAndConcatJSonOrNot(data.paging.next, compteur, jsonData);
} else {
handleResponse(jsonData);
}
});
}
在本地运行,不会改变区块链合同的状态。不消耗任何醚。contractCAt.getValues.call()
确实改变了状态(假设交易成功开采)。contractCAt.getValues.sendTransaction()
根据方法定义自动委托上述两个中的一个。常量和纯函数将使用contractCAt.getValues()
,而其余函数将使用call()
。