我有此代码:
$(document).ready(function(){
var dsg = new contract('1', '/json/dsgABI.json');
console.log(dsg.data);
});
var contract = function(contractAddress, abiFile){
var data = new Object();
$.when(abi()).then(function(abi) {
data.abi = abi;
});
function abi(){
return $.getJSON(abiFile, function(abi){
return abi;
});
}
this.data = data;
}
但是当使用console.log(dsg.data.abi[0])
时,我得到undefined
。
能帮我写代码,让我在函数内部和外部调用数据数组,并且在数组中有函数的结果。
P.S。:async
功能将达到10或更多!而且我需要将结果推送到数组上,并在需要时使用它!
答案 0 :(得分:0)
您需要返回一个承诺,其中包含您要访问的已解析值。 它比您做的要简单。
您调用函数contract
,该函数执行异步请求并使用获取的数据返回一个Promise,然后在解析后访问此数据。
因此您的代码应类似于:
$(document).ready(function(){
contract('1', '/json/dsgABI.json').then(data => {
console.log(data);
});
});
function contract(contractAddress, abiFile){
return $.getJSON(abiFile, abi => abi);
}