I have two functions in a blockchain contract to get the investors and funds for an address and tried to save that in Excel.
1st Function To get the list of investors:
getInvestorsList()
2nd Function This will take the investor address as input and returns the investor's address and the funds saved for that address:
getInvestorsAndBalances(address investorAddress)
I was able to get the list of investors and the funds sponsored by them using the functions getInvestorsList
and getInvestorsAndBalances
.
The below snippet, which convert the data to Excel has to executed only when the function getInvestorsAndBalances
executes completely for all investors. But this code is executed even before the call to the contract completes. Hence I am not getting the values from the blockchain to the below snippet.
How to make the below code wait for the successful completion of the function getInvestorsAndBalances
?
dataSample = dataSample + "]";
console.log("dataSample: " + dataSample);
//var dataSample = [{"address": "abc","balance": "21.22"}];
const xls = new XlsExport(dataSample, 'Example WB');
xls.exportToXLS('export.xls')
Complete Code
crowdSaleContractObj.getInvestorsList(function(error, result){
if(!error)
{
for (i=0; i < result.length; i++) {
crowdSaleContractObj.getInvestorsAndBalances(result[i],function(error, result1){
console.log(i);
if(!error)
{
console.log(i + " - Address : " + result1[0]+ ", Balance : " + result1[1]);
element = " {\"address\": " + result1[0] + ",balance:" + result1[1] + "},";
console.log("element: " + element);
dataSample = dataSample + element;
}
else
console.error(error);
});
}
dataSample = dataSample + "]";
console.log("dataSample: " + dataSample);
//var dataSample = [{"address": "abc","balance": "21.22"}];
const xls = new XlsExport(dataSample, 'Example WB');
xls.exportToXLS('export.xls')
}
else
console.error(error);
});