Открытая погода Аякс - PullRequest
       10

Открытая погода Аякс

0 голосов
/ 01 октября 2018

Я пытаюсь выполнить ajax-вызов к Openweathermap API, и мои переменные не обновляются, как только функция покидает ajax.Может кто-нибудь объяснить мне, почему мой var tmp не обновляется.

    var url1 = "http://api.openweathermap.org/data/2.5/find?lat=" + marker.position.lat()+"&lon="+marker.position.lng() + "&type=accurate&units=imperial&mode=json&APPID=8cbc2d4c3edf26435cf160f3cee969ed";
    var tmp;
    $.ajax({
    type: 'get',
    dataType: "jsonp",
    url: url1,
    async: false,
    success:function (data) {
tmp =data.list[0].main.temp +"F " + data.list[0].weather[0].description;
console.log(tmp); //it logs correctly here 
  }
});
console.log(tmp); //it says it's undefined here

1 Ответ

0 голосов
/ 01 октября 2018

Ajax является асинхронным, а не синхронным

  • Ваш первый TMP в обратном вызове ajax будет ожидать завершения ajax перед выполнением.
  • ваш второй TMP вне вашего обратного вызова ajax будет выполнен сразу же, прежде чем ждать завершения ajax

Вы можете прочитать о https://rowanmanning.com/posts/javascript-for-beginners-async/

некоторых изjs solutions

  • обратные вызовы (beginner1)
  • Async.js (beginner2)
  • Promises (средний уровень)
  • ES6 async / await (заранее)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...