gpt4 book ai didi

javascript - 我究竟该如何编写回调函数来更改 AJAX 中的全局变量以用于 jquery?

转载 作者:数据小太阳 更新时间:2023-10-29 05:32:54 26 4
gpt4 key购买 nike

好的,所以我查看了很多答案,但似乎没有一个对我想要实现的目标有帮助。假设我有以下代码:

var n = 0;
$.ajax({
...
success: function(data){
n = Math.floor((Math.random()*10) + 1);
somefunction(n);
}
});

console.log(n) // n would obviously be 0 again

我是通过使用 async:false 使其同步来实现的,但据我所知,这对用户体验不利,因为它会在等待结果时卡住浏览器。在上述情况下,我究竟如何实现回调函数以允许在 ajax 调用后修改全局变量 n

最佳答案

异步函数在不同的线程中执行(非阻塞),因此回调将在您的下一条指令之后调用:

console.log(n);

n 是在调用回调(成功函数)之后设置的,但日志是在异步函数完成之前设置的。一个简单的解决方案是将您的代码包装在一个函数中,并在 jQuery 调用成功函数后调用它。请注意,您不需要引用全局变量,因为它将设置在 jQuery 作用域之外,并且可由 operation_x 函数作用域访问。

var n = 0;
function operation_x(){
console.log(n); // n is set to random value
}
$.ajax({
...
success: function(data){
n = Math.floor((Math.random()*10) + 1);
somefunction(n);
operation_x();
}
});
console.log(n); // n is 0

关于javascript - 我究竟该如何编写回调函数来更改 AJAX 中的全局变量以用于 jquery?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33580445/

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