当前位置: 首页 > 知识库问答 >
问题:

$.getJSON返回变量[duplicate]的值

颜安宁
2023-03-14

这是我的问题

我有一个充满国家代码的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);
}

谢谢你的帮助。

共有1个答案

朱鸿畅
2023-03-14

把你要做的代码

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的第二个参数)。

 类似资料:
  • 问题内容: 我想回到别处外使用的 范围 的 我猜想这是与范围有关,但它似乎不相同的方式工作 C# 不 问题答案: 是的,我之前的答案不起作用,因为我没有对您的代码给予任何关注。:) 问题在于匿名函数是一个回调函数- 即getJSON是一个异步操作,它将在某个不确定的时间点返回,因此即使变量的范围不在该匿名函数(即闭包)之外,它也会没有您认为应该的价值: 要使用由getJSON调用设置的studen

  • 如何将“数据”保存到“结果”中? 代码如下:

  • 我被迫在getJSON回调函数中使用该函数之外的数据。看一看: 这就是我尝试的,但是失败了,$值仍然设置为0,尽管在回调中它肯定设置为实际值。我知道为什么它会失败,因为AJAX请求是异步发送的。问题是,正确的方法,做回调里面的一切,是不可能的。如你所见,我需要在raty(插件)设置中检索JSON对象。我只会使用$. ajax()并将其设置为同步,但留档将其标记为1.8不建议使用。我宁愿不引入一个我

  • 我正在使用请求npm包,它只是一个包装在HTTP调用中的promise。我过去对promise有过意见。我如何获得一个promise返回一个值,以便我可以在react中使用它,或者获得一个promise在该promise中设置一个react状态变量?我需要一个API调用的特定数字来设置一个react状态变量。 对于这样的代码... 而且

  • 我正在尝试返回在setTimout中计算的值。但好像我拿不出这个值。我读到要做到这一点,我必须用promise。我是否必须像下面这样使用它:https://italonascimento.github.io/application-a-timeout-to-your-promissions/?

  • 问题内容: 我想知道是否存在一种实现类似于map getter的功能的方法:它返回返回值作为第一个参数,(可选地分配)第二个值作为第二个参数。因此,我需要可以通过以下方式调用的函数: 问题答案: 不,它无法完成,唯一的选择是返回一个指针并检查它是否为nil。