I'm using an API (mapbox) which has an async method using a callback function to get features from clusters on the map. Since each cluster may contain other clusters I need to call this recursively to get all the features. I've written this recursive method:
getClusterChildrenRecursive(clusterId: any, features: any[] = []) {
//API call, I can't modify method getClusterChildren
this.map.getSource('events').getClusterChildren(clusterId, (err, children) => {
for (let i = 0; i < children.length; i++) {
if (children[i].properties.cluster) {
//Child is another cluster, recurse
this.getClusterChildrenRecursive(children[i].properties.cluster_id, features);
}
else {
//Found feature, add to collection
features.push(children[i]);
}
}
});
}
But I can't figure out how to call this and return a collection of all features. I've thought of returning a promise but can't get it to work.