2016-11-28 3 views
-1

Я вызываю функцию от АЯКСА успеха и пытается вернуть значение из функцииВозврата из функции не работает в JavaScript

Аякса успех

success: function(data) 
    { 
    var distance_arr;  
    data = JSON.parse(data); 
    for (var i = 0; i < data.length; i++) 
    { 
     if(data[i].port_name != destination) 
     { 
      distance_arr = get_port_distance(data[i].port_name,source,type); 
      alert(distance_arr); 
     } 

    } 
    } 

В get_port_distance функции Я возвращаю значение, как

return distance; 

путем вычисления расстояния в функции get_port_distance. Когда я начеку расстояние в get_port_distance то это правильно, но когда я вернуть его Это предупредит пробел в АЯКС функция успеха

function get_port_distance(source,destination,type) 
{ 
    var directionsDisplay; 
    var directionsService = new google.maps.DirectionsService(); 


    var request = 
    { 
     origin: source, 
     destination: destination, 
     travelMode: google.maps.TravelMode.DRIVING 
    }; 

     var service = new google.maps.DistanceMatrixService(); 
     service.getDistanceMatrix({ 
     origins: [source], 
     destinations: [destination], 
     travelMode: google.maps.TravelMode.DRIVING, 
     unitSystem: google.maps.UnitSystem.METRIC, 
     avoidHighways: false, 
     avoidTolls: false 
    }, function (response, status) { 
    if (status == google.maps.DistanceMatrixStatus.OK && response.rows[0].elements[0].status != "ZERO_RESULTS") { 
     var port_distance = response.rows[0].elements[0].distance.text; 
     port_distance = port_distance.replace(/\,/g,'').replace(' km',''); // To REMOVE comma(,) 
     return port_distance; 

     } 
    }); 
}  
+0

Вы также можете поделиться кодом для get_port_distance. – Sumit

+0

Ваше условие цикла может указывать пустое значение. , вам может потребоваться разбить цикл, когда вы получите значение расстояния от функции – Afsar

+0

Если вы считаете, что проблема в 'get_port_distance', вы должны отправить ее – RizkiDPrast

ответ

1

return port_distance;

помещается внутрь:

function (response, status) {}.

Это означает, что вы ничего не возвращаются из:

function get_port_distance(source,destination,type){}

Смотрите эту Stackflow answer для помочь решить проблему возвращения из функции асинхронной.

+0

Да. Но как я могу вернуть его. Теперь я вернул его вне функции (ответ, статус) {} он дает ошибку port_distance не определен – hrishi

+0

Обновленный ответ - см. Ссылку – rabbitco

+0

* Да. Но как я могу вернуть его. * Вы не можете вернуть будущее или асинхронное значение - оно еще не существует. –

Смежные вопросы