2016-08-17 1 views
-1

Я изучаю JS несколько месяцев, я написал простые сценарии. Но теперь я сталкиваюсь с проблемой, которую я не могу сформулировать в Google. У меня есть программаПримите значение от функции

var iWantValueFromAjax = "im empty"; 
$.ajax({ 
    type: "POST", 
    dataType:'jsonp', 
    url: "https://api.novaposhta.ua/v2.0/json/", 
    data: { 
    "modelName": "Address", 
    "calledMethod": "getCities", 
    "methodProperties":{}, 
    "apiKey": "6f94a6391cb5134ee68ddb7924de2a3d"}, 
    success: function(msg){ 
     iWantValueFromAjax = msg.data.map(function(e) { 
     return (e.Description); 
     }); 
    }, 
    } 
); 
console.log(iWantValueFromAjax); 

Я вижу, что значение переменной «iWantValueFromAjax» не изменяется. Я подозреваю, что я не понимаю масштаб jQuery. Может быть, я не понимаю цели идеи целиком, lol.

+0

Ничего себе, не используйте возврата OBJ в качестве имени переменной, это сбивает с толку – Noppey

+1

На самом деле , тире недействительны как имена переменных; этот код не будет запускаться вообще, как показано здесь. – Aurora0001

+0

Вы возвращаете что-то с: return varName; – Noppey

ответ

0

Вам необходимо понять природу асинхронных запросов.

Асинхронные средства: вы инициируете какое-то действие, которое (через некоторое время) изменит состояние и вызовет функцию обратного вызова.

Но: нормальный поток программы будет продолжаться после того, как вы инициировали асинхронное действие.

Что это значит?

  1. Код console.log(iWantValueFromAjax) будет выполнен сразу после вызова $ .ajax(). Таким образом, это определенно будет выполняться до того, как будет вызван обратный вызов запроса.
  2. Каждое последующее действие, зависящее от результата асинхронного вызова, должно быть выполнено в обратном вызове или вызвано из этого обратного вызова (например, путем вызова функции). Особенно вы ничего не можете вернуться из асинхронного обратного вызова (technicall вы можете, но возвращаемое значение не будет в конечном итоге «нигде»)
+0

Да, вы правы. О, теперь это кажется таким простым. – Ogurchik

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