Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更新的变量未在函数外读取_Javascript_Jquery_Json - Fatal编程技术网

Javascript 更新的变量未在函数外读取

Javascript 更新的变量未在函数外读取,javascript,jquery,json,Javascript,Jquery,Json,我接到一个ajax调用,一旦成功,我将增加1收到的值。getMessage()只应在接收

我接到一个ajax调用,一旦成功,我将增加1收到的值。getMessage()只应在接收<10为真时输入。但是,函数外部接收的返回值始终为0,从而导致无限while循环

是否有人有任何建议,以便在函数外部看到更新后的接收值

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
函数。