Показать сообщение отдельно
  #1 (permalink)  
Старый 23.03.2015, 22:15
Новичок на форуме
Отправить личное сообщение для jenek_34 Посмотреть профиль Найти все сообщения от jenek_34
 
Регистрация: 24.02.2015
Сообщений: 4

Работы с callback функциями
Здравствуйте! У меня такой вопрос...
В объекте вызываю метод. В этом методе выполняется функция, а в ней 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 функций. И что делать в процессе их выполнения...
Надеюсь описал понятно, если что не ругайтесь, а просто спросите
Всем добра!
Ответить с цитированием