I am trying to create a module that fetches all the info one by one and stores it in an array at the end it returns the array, instead of the loop I am using recursion. The problem here is that my main function is not waiting for the return value due to which no value is passed in the callback. I can re-write this async await or promise but if the same type of problem is present in the entire project I don't want to re-write the entire thing. This can be handled by callbacks? or some other way I can resolve it.
const GetRequest = require("./getRequest.js");
module.exports = function GetProcessList(environment, token, processCompleteList, callback) {
var allProcessDraft = [];
var loopMaxRun = processCompleteList.data.length -1;
var a = RecursiveGet(environment, token, processCompleteList, allProcessDraft, loopMaxRun);
callback(a); //Not waiting for the value
}
//recursion function to get all the data one by one
function RecursiveGet(environment, token, processCompleteList, allProcessDraft, index) {
var URL = "https://" + environment + "...../rest/process/versionPage?calledFrom=master&pageNo=0&processMasterId=" + processCompleteList.data[index].id + "&recordsPerPage=10&sortType=DESC";
if (index != 0) {
GetRequest(URL, token, function (processDraft) {
allProcessDraft.push(processDraft);
return RecursiveGet(environment, token, processCompleteList,allProcessDraft, index -1);
});
} else {
return allProcessDraft;
}
}
Try the below code.
async function RecursiveGet(environment, token, processCompleteList, allProcessDraft, index) {
var URL = "https://" + environment + "...../rest/process/versionPage?calledFrom=master&pageNo=0&processMasterId=" + processCompleteList.data[index].id + "&recordsPerPage=10&sortType=DESC";
if (index != 0) {
const processedDraft = await GetRequest(URL, token);
allProcessDraft.push(processDraft);
return RecursiveGet(environment, token, processCompleteList,allProcessDraft, index -1);
} else {
return allProcessDraft;
}
}
note: make sure GetRequest is async