Javascript 更新的变量未在函数外读取
我接到一个ajax调用,一旦成功,我将增加1收到的值。getMessage()只应在接收<10为真时输入。但是,函数外部接收的返回值始终为0,从而导致无限while循环 是否有人有任何建议,以便在函数外部看到更新后的接收值Javascript 更新的变量未在函数外读取,javascript,jquery,json,Javascript,Jquery,Json,我接到一个ajax调用,一旦成功,我将增加1收到的值。getMessage()只应在接收
var received = 0;
while (received < 10) {
getMessage();
}
function getMessage() {
$.ajax({
url: '/Home/getData/',
type: "GET",
success: function(result) {
received += 1;
}
});
console.log(received);
}
}
});
}
var接收=0;
而(收到<10){
getMessage();
}
函数getMessage(){
$.ajax({
url:“/Home/getData/”,
键入:“获取”,
成功:功能(结果){
接收+=1;
}
});
控制台日志(已接收);
}
}
});
}
我强烈建议您阅读这篇重复的文章。但是,这是尝试使用异步方法来解决问题的一种可能的解决方案
var接收=0;
//接收值小于10,开始循环
getMessage();
函数getMessage(){
$.ajax({
url:“/Home/getData/”,
键入:“获取”,
成功:功能(结果){
接收+++;//增量
如果(接收值小于10){
控制台日志(已接收);
getMessage();
}
}
});
}
最短解决方案的可能重复是在成功处理程序中将while循环变成if条件。@t如果它第一次执行时在success方法中,它将不再执行,如果它将在ajax调用中执行,因此您的getMessage()
函数,立即返回并异步执行。因此,您的while
循环将在第一次调用成功之前多次调用getMessage()
,并调用success
函数。