如何记录数组中所有异步函数的结果

时间:2019-01-02 17:28:59

标签: javascript

我有此代码:

$(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或更多!而且我需要将结果推送到数组上,并在需要时使用它!

1 个答案:

答案 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);
}