$ .getJSON返回变量值

这是我的问题

我有一个充满国家代码的JSON文件,还有一个获取随机国家代码的函数,如下所示:

function getRandomCountryCode(specificMap){
  $.getJSON('../maps/' + specificMap + '.json', function( data ) {
    var countries = [];
    for (var i in data.country) {
      countries.push(data.country[i].code);
    }
    var rndCountryCode = countries[Math.floor(Math.random()*countries.length)];
    return rndCountryCode;
  });
};

在另一个函数中,我调用上面的函数,然后尝试将rndCountryCode变量存储到另一个变量中,以便在新函数中可用。

function loadMap(map){
  var specificMap = map;
  var y = getRandomCountryCode(specificMap);
  console.log("Y is : " + y);
}

我所得到的是undefined我做了很多研究(在这里这里,特别是在这里),并意识到这是由于的异步特性$.getJSON,我应该使用回调,但是对于我的一生我无法弄清楚。

感谢你的帮助。

AmmarCSE

放入您要执行的代码

var y = getRandomCountryCode(specificMap);

在成功回调中

function getRandomCountryCode(specificMap){
  $.getJSON('../maps/' + specificMap + '.json', function( data ) {
    var countries = [];
    for (var i in data.country) {
      countries.push(data.country[i].code);
    }
    var rndCountryCode = countries[Math.floor(Math.random()*countries.length)];
    >>>console.log("rndCountryCode  is : " + rndCountryCode );
    return rndCountryCode;
  });
};

由于getJSON是异步的,并且您不知道响应何时返回,因此,确保处理响应的代码将起作用的唯一方法是将其放入成功处理程序(getJSON的第二个参数)。

成功响应后,无论花费多长时间,都会成功执行处理程序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章