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