Подход, который вы использовали, хорош. Надежный подход к работе с асинхронными функциями будет следующим:
вы используете запросы ajax, если вы используете JQuery для выполнения запросов AJAX, тогда выработая с обещаниями, вот решение, которое вы можете использовать:
Создание массива обещаний
var myPromises = [f1(),f2(),f3(),f4(),f5(),f6(),f7()];
теперь, когда у вас настроен массив, используйте функцию Promise.all
Promise.all(myPromises).then(function(vals){
// write your code here
});
Promise.all вызывается, когда все ваши асинхронные задачи, переданные в массиве, завершены.