I have a REST service, offering a list of 'Json' objects, and each object may potentially have a link for another resource of its own class. Starting with a particular one, I need to fetch them all, performing a recursive http call. So I wrote:
var steps = [];
var recursiveLookup = function(processId) {
  return $.ajax({
    url: SERVER_URL + processId,
    success: function (activity) {
      // Activity has a set of json objects called steps
      var rtn = activity.path.map(step => {
        if (step.type != "Node") {
          steps.push(step);
        } else {
          return recursiveLookup(step.subProcessIntanceId);
        }
      }).filter(a => a != undefined);
      return rtn;
    }
  });
}
That would correctly load all objects into the global steps var. I need to be sure the method has finished, so I wrote:
var promises = recursiveLookup(processId);
Promise.all(promises).then(function () {
   console.log(steps);
});
But it's not working, as the 'recursiveLookup' is returning the promise of $.ajax, instead of the set of promises pretended to be returned with the success method.
Furthermore, is it possible to get the steps as a returned value from the 'recursiveLookup' method instead, of using it as a global variable?
 
     
    