javascript - 代码执行是否等待Ajax响应?

标签 javascript ajax global-variables timing

基本上我有

correctData = false//global variable
function calledFirst()
{
        xmlhttp.onreadystatechange=function()
        {
            if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
            {

                proceedDiv.innerHTML = xmlhttp.responseText
                if(xmlhttp.responseText == "You may continue.")
                    correctData = true
                else
                    correctData = false
            }
        }
        xmlhttp.open("GET", "process.php?proposed="+encodeURIComponent(mon2),true);
        xmlhttp.send()
        calledSecond()
}
function calledSecond()
{
    if(!correctData)
    {
     //uh-oh

看起来 usedSecond() 在 Ajax 响应完成之前被调用,这是一个问题,因为 CorrectData 的值取决于 Ajax 响应,而 calleSecond 使用它。我该如何解决这个问题?

更新:每个人都是对的,如果我将函数调用放在回调部分,它就会起作用,但为什么它会起作用?您只是让我相信它不起作用,因为 Ajax 是异步的,因此其余代码不会等待 Ajax 完成,那么为什么要将其移至回调部分来修复此问题?

最佳答案

这就是 AJAX 是异步的原因。编译器不会等待 AJAX 调用完成,就会编译页面的其余部分。

如果你希望第二次调用 CalledSecond(),你必须将其放入回调函数中。

关于javascript - 代码执行是否等待Ajax响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17602550/

相关文章:

c - 解释 C 程序的以下输出

javascript - 将 PHP 值显示到不刷新的页面

ajax - 在 ajax 请求 struts 2 中不返回任何 View

javascript - Jquery/Javascript提交按钮: first time success,第二次重新加载页面

javascript - 我将如何根据所选语言订购品牌 div?

php - 使用 javascript 从 php 获取变量

python - 如何从 Flask API 调用中删除全局变量?

java - 如何在此嵌入式程序中不使用全局变量?

javascript - 我不断收到 angularjs service is not a function 错误(LoginService.login 不是函数)

javascript - 将 json 保存到 chrome 存储/本地存储