露天阿贾克斯

时间:2018-09-30 22:36:22

标签: ajax api openweathermap

我正在尝试对Openweathermap API进行ajax调用,一旦函数离开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 :(得分:0)

Ajax是异步的,而不是同步的

  • 您在ajax回调中的第一个TMP将在执行之前等待ajax完成。
  • 在ajax回调之外的第二个TMP将立即执行,然后再等待ajax完成

您可以继续阅读 https://rowanmanning.com/posts/javascript-for-beginners-async/

一些js解决方案

  • 回调(beginner1)
  • Async.js(beginner2)
  • 承诺(中间)
  • ES6异步/等待(高级)