Дождитесь окончания асинхронной функции Javascript для получения результата (Отложено?)

Хорошо, ребята, я знаю, что эта тема уже обсуждалась несколько раз, но я не могу найти ответ, чтобы решить мою проблему.

Поэтому я пытаюсь сделать простую мысль: я создаю строку, например:distance is : " + CalculateDistance(position); Требуемый результат что-то вродеdistance is 5kms (8min).

CalculateDistance(position) это функция, вызывающая API карт Google с именем DistanceMatrix для вычисления расстояния между двумя точками. API документированВот, и данный образец отлично работает. Я адаптировал это так:

function CalculateDistance(position)
{
    var service = new google.maps.DistanceMatrixService();
    var destination = new google.maps.LatLng(/* some lat/lng */);

    service.getDistanceMatrix(
    {
        origins: [position],
        destinations: [destination],
        travelMode: google.maps.TravelMode.DRIVING,
        unitSystem: google.maps.UnitSystem.METRIC,
        avoidHighways: false,
        avoidTolls: false
    }, callback);
}

function callback(response, status) {
    if (status == google.maps.DistanceMatrixStatus.OK)
    {
        var origins = response.originAddresses;
        var destinations = response.destinationAddresses;

        var results = response.rows[0].elements;
        distanceMatrixResult = results[0].distance.text + " ( " + results[0].duration.text + " min)";
    }

О, и кстати,distanceMatrixResult это глобальная переменная. На самом деле мне просто нужно получить содержимое результатов [0] .distance.text (и когда я распечатываю его в консоли,callback(), значение ОК), а затем объединить значение с «Расстояние is». Если у кого-то есть более разумное решение, оно приветствуется!

Вызов APIасинхронныйи в моем случаеdistanceMatrixResult всегда пуст в строке результата. Но когда я регистрирую его значение в консоли,distanceMatrixResult ценность стала хорошейПОСЛЕ Строка была создана.

Все, что я хочу написать, это:

• ВызовCalculateDistance (который вызывает обратный вызов асинхронно)
• Когдаcallback заканчивается, объедините строку сdistanceMatrixResult стоимость.

Я попробовал немногоОтложенный, любить$.done() а также$.when().then() но я не могу добиться успеха ...

Кто-нибудь может мне помочь ?
Спасибо !

Ответы на вопрос(1)

Ваш ответ на вопрос