需要等到XMLHttpRequest完成

时间:2012-10-01 07:55:45

标签: javascript xui

每当我试图找到这个问题的答案时,每个人都会提到ajax启动/停止等。

我正在使用XUI JS's XHR函数进行跨域调用,现在我想要完全像这样

callMyXHRfunction();
callNextFunctionWhenAboveFunctionResponded();

即。除非我的xhr函数响应(成功或失败),否则我应继续前进

更新

用例:

有一个名为getAllData()的函数,这个函数将我提交给服务器的所有当前数据都获取。我需要经常调用此函数来获取最新数据并继续前进。登录时我调用此函数来获取最新数据,每10分钟后我需要调用它来刷新数据。

因此,如果我在成功函数上调用我的每个函数,那么我的代码可能会混淆其他开发人员,如果我像上面那样写,他/她将很容易知道第一行和第二行发生了什么。

希望现在每个人都能很好地了解我的情况。

2 个答案:

答案 0 :(得分:1)

请参阅您引用的网站上的第三个示例:

x$( selector ).xhr( url, fn );

第二个参数可以是回调,回调是你可能想要开始的关键字。

或者,通过提供async: false作为选项来使用同步呼叫。

x$("body").xhr("http://the-url",{ async: false });

控制流将暂停,直到请求返回,然后继续执行下一个功能。请参阅http://jsfiddle.net/ZQ9uw/以供参考。

答案 1 :(得分:0)

您需要以指定回调函数的方式进行.xhr调用,并将“next”函数作为回调函数传递。

所以你会这样写:

callMyXHRFunction(nextFunctionToCall); // no parens after nextFunctionToCall!

function callMyXHRFunction(callback) {
    $("something").xhr(url, {
        error: callback, // so that nextFunctionToCall is called on error
        callback: callback, // so that nextFunctionToCall is called on success
        async: true
        // add more options here
    });
}