Здравствуйте! У меня такой вопрос...
В объекте вызываю метод. В этом методе выполняется функция, а в ней callback функция. Выполняется она не быстро и нужно отловить момент, когда она закончит выполняться и вернула результат. 
Как лучше это сделать? Читал на форуме, что можно в callback функции создать новую функцию, которая выполнится по завершению. Это работает, но нужно чтобы сам метод вернул результат. Додумался через setInterval каждые 50мс отслеживать не пришло ли туда что-нибудьх.Вообщем запутал, наверное, вот код:
Это метод: 
resultTripMethod: function(){var infoRoude = viewRoude(directionService, directionRenderer, this.from, this.to);
Это функция, в которой выполняется callback функция
function viewRoude(directionService, directionRenderer, start, end){
	console.log(1);
	var request = {
		origin: new google.maps.LatLng(start.pos.lat, start.pos.lng),
		destination: new google.maps.LatLng(end.pos.lat, end.pos.lng),
		travelMode: google.maps.TravelMode.DRIVING
	};
	var a;
	directionService.route(request, function(result, status){
		if(status == google.maps.DirectionsStatus.OK){
			a = result;
			finish(a);
		}
	});
	
	function finish(res){//Отлов с новой функцией
		console.log(res);
		//Как ее вернуть в метод...
	}
	
	var timer = setInterval(function(){//Отлов с помощью setInterval
		if(a != undefined){
			clearInterval(timer);
			console.log(a);
			return a;
		}
	}, 50);
	
}
И еще нужно отлавливать в самом начале (в объекте в переменную infoRoude) не пришел ли результат. 
Наверняка есть универсальный способ отлова завершению callback функций. И что делать в процессе их выполнения...
Надеюсь описал понятно, если что не ругайтесь, а просто спросите
 
Всем добра!