gpt4 book ai didi

javascript - 推迟 $.getJSON 的返回并将 async 设置为 false

转载 作者:行者123 更新时间:2023-12-01 02:26:55 25 4
gpt4 key购买 nike

我尝试了在其他问题中看到的各种解决方案,但没有成功记录 data.ip .

当我登录时foo我只回undefined 。为什么是ip未使用 async 记录属性设置为false

TY

$.ajaxSetup({
async: false
});

var getIp = function() {
var ip;
$.getJSON('//freegeoip.net/json/?callback=?', function(data) {
ip = data.ip;
});
return ip;
}

var foo = getIp();
console.log(foo);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

最佳答案

您没有正确实现 AJAX。我更改了您的函数,使其返回一个 Promise (请注意函数中的 return 关键字)。之后,在 .then() 中,您可以传递一个回调函数,该函数将在 Ajax 完成后执行。$.getJSON() 是一个Ajax 的实现 ( http://api.jquery.com/jquery.ajax/ )

注意:

我强烈建议不要在任何 xhr/Ajax 中使用 async: false,因为它会减慢您的网站速度。最好使用下面的代码:

var getIp = function() {
var ip;
return $.getJSON('//freegeoip.net/json/?callback=?', function(data) {
return data.ip;
});
}

getIp().then(function(res) {
console.log(res);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

关于javascript - 推迟 $.getJSON 的返回并将 async 设置为 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48703863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com