Javascript 如何将ajaxComplete应用于XMLHttpRequest

Javascript 如何将ajaxComplete应用于XMLHttpRequest,javascript,json,ajax,asynchronous,Javascript,Json,Ajax,Asynchronous,我正在使用XMLHttpRequest()异步请求加载json文件。我需要等待请求完成,然后再继续进行其他操作 我看到ajaxComplete()应该做到这一点,但我无法将其应用到实际代码中并使其正常工作 在这里,我将设置通过异步请求调用json的函数 function ajaxCall(){ xmlhttp.onreadystatechange = function(){ if(xmlhttp.readyState==4 && xmlhttp.sta

我正在使用XMLHttpRequest()异步请求加载json文件。我需要等待请求完成,然后再继续进行其他操作

我看到ajaxComplete()应该做到这一点,但我无法将其应用到实际代码中并使其正常工作

在这里,我将设置通过异步请求调用json的函数

function ajaxCall(){

    xmlhttp.onreadystatechange = function(){

        if(xmlhttp.readyState==4 && xmlhttp.status==200){
            arrayImages = JSON.parse(xmlhttp.responseText);
            output(arrayImages);
        }
    }

    xmlhttp.open("GET", url, true);
    xmlhttp.send();

}
我在这里调用这个函数

ajaxCall();
现在我希望它完成

do other things
有什么帮助吗

谢谢

您有两个选择

A

然后你就可以在事情完成后做一些事情

ajaxCall().then(function(){
    // Do stuff after
});
您可以使用回调

function ajaxCall(callback){
    xmlhttp.onreadystatechange = function(){
        if(xmlhttp.readyState==4 && xmlhttp.status==200){
            arrayImages = JSON.parse(xmlhttp.responseText);
            output(arrayImages);
            callback();
        }
    }
    xmlhttp.open("GET", url, true);
    xmlhttp.send();
}
然后像这样做

ajaxCall(function(){
    // do stuff after
});

ajaxComplete
是jQuery库的一部分。它只绑定到jQuery ajax请求。虽然它们通常包装XMLHttpRequest,但当您手动使用XMLHttpRequest时,它们无法触及XMLHttpRequest

要在响应返回后运行一些代码,需要等待合适的事件。您已经在这里这样做了:

将接收到响应后要运行的代码放在if语句中


如果要使
ajaxCall
可重用,则将函数作为参数传递给它,然后在
If
语句中调用该函数。

make
ajaxCall
接受“做其他事情”的回调。有关具体示例,请参见“我看到ajaxComplete()应该做到这一点”,这似乎是一个jQuery问题。由于您没有使用jQuery,因此它不适用于您。感谢您的帮助,我尝试了所有这些方法,尤其是第二种方法,但它不想进入函数。所以它运行ajaxCall(),但不运行内部代码。。。ajaxCall(函数(){alert('Hello!');})@rolfo85-您是否向函数中添加了回调参数?您是否在函数中调用了回调参数?有两个地方需要添加。发布您的更新代码。
ajaxCall(function(){
    // do stuff after
});
if(xmlhttp.readyState==4 && xmlhttp.status==200){