在XMLHttpRequest完成后运行代码

时间:2014-12-10 02:10:21

标签: javascript

我有这个功能

function C(Id)
{
    var A=Y(Id);
    alert("A"+A);    
}

function Y(idImagen)
{
    var HR= new XMLHttpRequest();       
    HR.open("Post",DownloadImg_Php,true);
    HR.setRequestHeader("Content-type","application/x-www-form-urlencoded");                            
    HR.onreadystatechange=function()
    {       
        if(HR.readyState==4 && HR.status==200)
        {   
            return HR.responseText;
        }
    }
    //Ejecuta el Objeto                             
    HR.send(Variables); 
}

所以这就是我的问题,警报打印出来并且非常确定它是因为该行运行是为了XMLObject完成请求,这是对tu的返回并将期望值作为变量A的预设值。

所以我的问题是,如何停止代码运行,直到返回Y的值。

1 个答案:

答案 0 :(得分:0)

实际上,您可以使用任何类似jQueryAngular的库和$ http来制作XHR请求。它更方便,给我们灵活性。如果您不想,可以在EcmaScript 6 CMIIW上使用Promises,则可以使用whenjs中的shim。这是为了避免将来callbacks spaghetti

但是如果你想使用简单的Javascript代码,你的警报必须在

HR.onreadystatechange=function()
  {       
    if(HR.readyState==4 && HR.status==200)
    {
      alert("A"+HR.responseText);
    }
  }

因为它是asynchronous