Это позволяет вам отложить выполнение вашей функции обратного вызова до тех пор, пока не будет завершен ajax-запрос (или любая асинхронная операция). Это также можно использовать для вызова обратного вызова после завершения нескольких запросов ajax.

от вопрос уже есть ответ здесь:

Как вернуть ответ от асинхронного вызова? 33 ответа

Этот вопрос задают много раз в SO. Но все равно я не могу получить вещи.

Я хочу получить некоторое значение от обратного вызова. Посмотрите на сценарий ниже для уточнения.

function foo(address){

      // google map stuff
      geocoder.geocode( { 'address': address}, function(results, status) {
          results[0].geometry.location; // I want to return this value
      })

    }
    foo(); //result should be results[0].geometry.location; value

Если я попытаюсь вернуть это значение, просто получаю "undefined". Я последовал за некоторыми идеями из SO, но все еще не удается.

Это:

function foo(address){
    var returnvalue;    
    geocoder.geocode( { 'address': address}, function(results, status) {
        returnvalue = results[0].geometry.location; 
    })
    return returnvalue; 
}
foo(); //still undefined

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

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